GVKun编程网logo

Socket.IO-需求未定义(需求定义错误)

11

在本文中,您将会了解到关于Socket.IO-需求未定义的新资讯,同时我们还将为您解释需求定义错误的相关在本文中,我们将带你探索Socket.IO-需求未定义的奥秘,分析需求定义错误的特点,并给出一些

在本文中,您将会了解到关于Socket.IO-需求未定义的新资讯,同时我们还将为您解释需求定义错误的相关在本文中,我们将带你探索Socket.IO-需求未定义的奥秘,分析需求定义错误的特点,并给出一些关于boost::asio 序列16: tcp::socket 和 udp::socket & socket_basic、c# – System.Net.Sockets.SocketException创建websocket连接时、flask-socketio + vue-socket.io 组合使用 demo、GET http:// localhost:3000 / socket.io / socket.io.js 404(未找到)的实用技巧。

本文目录一览:

Socket.IO-需求未定义(需求定义错误)

Socket.IO-需求未定义(需求定义错误)

我正在尝试使socket.io正常工作,但是现在在Chrome中出现错误:

未捕获的ReferenceError:未定义require

client.php:9Uncaught ReferenceError:未定义io

我更改了包含socket.io.js文件的方式,因为它确实不存在:

<script src="/node_modules/socket.io/lib/socket.io.js"></script>

如果我尝试

<script src="/socket.io/socket.io.js"></script>

我得到: 无法加载资源:服务器响应状态为404(未找到)

这是Ubuntu上所有最新消息

我正在使用来自http://socket.io/的服务器代码在与client.php相同的文件夹中使用,并且可以正常工作,名为server.js,仅修改了端口。

答案1

小编典典

如果您的脚本不是来自您的网络服务器,则将无法使用:

<script src="/socket.io/socket.io.js"></script>

您必须明确声明主机和端口:

<script src="http://localhost:<port>/socket.io/socket.io.js"></script>

boost::asio 序列16: tcp::socket 和 udp::socket & socket_basic

boost::asio 序列16: tcp::socket 和 udp::socket & socket_basic

           reactive_socket_service_base          execution_context_service_base <reative_socket_service<Porotocol>>  

                                                                \                         |

                                                                reactive_socket_service<Protocol>

                                                                                    |                                                                          

                                  socket_basic             io_object_impl<Protocol, Executor>  (成员变量)               system_executor            

                                                              \                   |                                                                                      |

                                                                   basic_socket<Protocol, Executor>    其中 Exector =====>     executor 

                                                                         /                         \                                                                       

                          basic_stream_socket<tcp>                 basic_datagram_socket<udp>                        

socket_basic:定义socket共用的一些数据类型和选项

shutdown_type     shutdown_receive = BOOST_ASIO_OS_DEF(SHUT_RD),
    shutdown_send = BOOST_ASIO_OS_DEF(SHUT_WR),
    shutdown_both = BOOST_ASIO_OS_DEF(SHUT_RDWR)

message_flags   BOOST_ASIO_STATIC_CONSTANT(int,
      message_peek = BOOST_ASIO_OS_DEF(MSG_PEEK));
  BOOST_ASIO_STATIC_CONSTANT(int,
      message_out_of_band = BOOST_ASIO_OS_DEF(MSG_OOB));
  BOOST_ASIO_STATIC_CONSTANT(int,
      message_do_not_route = BOOST_ASIO_OS_DEF(MSG_DONTROUTE));
  BOOST_ASIO_STATIC_CONSTANT(int,
      message_end_of_record = BOOST_ASIO_OS_DEF(MSG_EOR));






wait_type

  enum wait_type
  {
    /// Wait for a socket to become ready to read.
    wait_read,


    /// Wait for a socket to become ready to write.
    wait_write,

    /// Wait for a socket to have error conditions pending.
    wait_error
  };

SOL_SOCKET/SO_BROADCAST   typedef boost::asio::detail::socket_option::boolean<
    BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_BROADCAST)>
      broadcast;

SOL_SOCKET/SO_DEBUG   typedef boost::asio::detail::socket_option::boolean<
    BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_DEBUG)> debug;
SOL_SOCKET/SO_DONTROUTE   typedef boost::asio::detail::socket_option::boolean<
    BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_DONTROUTE)>
      do_not_route;

SOL_SOCKET/SO_KEEPALIVE   typedef boost::asio::detail::socket_option::boolean<
    BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_KEEPALIVE)> keep_alive;
SOL_SOCKET/SO_SNDBUF   typedef boost::asio::detail::socket_option::integer<
    BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_SNDBUF)>
      send_buffer_size;

SOL_SOCKET/SO_SNDLOWAT   typedef boost::asio::detail::socket_option::integer<
    BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_SNDLOWAT)>
      send_low_watermark;

SOL_SOCKET/SO_RCVBUF   typedef boost::asio::detail::socket_option::integer<
    BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_RCVBUF)>
      receive_buffer_size;

SOL_SOCKET/SO_RCVLOWAT   typedef boost::asio::detail::socket_option::integer<
    BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_RCVLOWAT)>
      receive_low_watermark;

SOL_SOCKET/SO_REUSEADDR   typedef boost::asio::detail::socket_option::boolean<
    BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_REUSEADDR)>
      reuse_address;

 SOL_SOCKET/SO_LINGER   typedef boost::asio::detail::socket_option::linger<
    BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_LINGER)>
      linger;

SOL_SOCKET/SO_OOBINLINE   typedef boost::asio::detail::socket_option::boolean<
    BOOST_ASIO_OS_DEF(SOL_SOCKET), BOOST_ASIO_OS_DEF(SO_OOBINLINE)>
      out_of_band_inline;

Socket option to report aborted connections on accept   typedef boost::asio::detail::socket_option::boolean<
    boost::asio::detail::custom_socket_option_level,
    boost::asio::detail::enable_connection_aborted_option>
    enable_connection_aborted;


the FIONREAD IO control command typedef boost::asio::detail::io_control::bytes_readable bytes_readable;

       

  • 点赞
  • 收藏
  • 分享
    • 文章举报
Hit_HSW
发布了203 篇原创文章 · 获赞 109 · 访问量 32万+
私信 关注

c# – System.Net.Sockets.SocketException创建websocket连接时

c# – System.Net.Sockets.SocketException创建websocket连接时

我是websocket的新手.我在.net 4.5框架中创建了一个控制台应用程序,并使用库“WebSocketSharp”创建了一个示例websocket客户端.我有以下代码

using System;
using WebSocketSharp;


namespace WebsocketTest
{
    class Program
    {
        public static void Main(string[] args)
        {
            try
            { 
            using (var ws = new WebSocketSharp.WebSocket("ws://192.168.18.186:7884"))
            {
               Console.WriteLine("started");
                ws.Connect();
                ws.Send("START");
                Console.ReadLine();
                }
            }catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.ReadLine();
            }

        }
    }
}

但是我无法创建与在另一台机器上运行的websocket服务器的连接.我收到这样的错误信息

09-05-2017 16:20:41|Fatal|WebSocket.connect:0|System.Net.sockets.socketException (0x80004005): No connection Could be made because the target machine actively refused it 192.168.18.186:7884
                             at System.Net.sockets.TcpClient..ctor(String hostname,Int32 port)
                             at WebSocketSharp.WebSocket.setClientStream()
                             at WebSocketSharp.WebSocket.doHandshake()
                             at WebSocketSharp.WebSocket.connect()

与我的代码有关的问题是什么?有什么好的websocket库可用吗?

解决方法

查找代码是否存在问题的最简单方法是使用任何支持Web套接字的浏览器尝试连接到端点,并查看会发生什么.如果不确定,你也可以只使用telnet – 因为web-socket开始是一个文本协议(http 1.1标题)而你没有使用SSL,你应该只能打开一个连接并发送一些虚拟标题.如果telnet无法连接:您的代码将无法连接.

如果telnet可以连接,则客户端lib可能存在问题.实际上有一个内置于.NET中的Web套接字客户端,您应该可以使用它(ClientWebSocket)

flask-socketio + vue-socket.io 组合使用 demo

flask-socketio + vue-socket.io 组合使用 demo

manage.py

import datetime
import json
from flask_socketio import Namespace, emit, SocketIO, disconnect
from flask import Flask, render_template,request

app = Flask(__name__)
socketio = SocketIO(app,cors_allowed_origins="*")

class MyCustomNamespace(Namespace):

    def __init__(self,namespace):
        super(MyCustomNamespace, self).__init__(namespace)
        self.sid = None
    def on_connect(self):
        self.sid = request.sid
        print(''建立连接成功!-{}''.format(self.sid))

    def on_disconnect(self):
        print(''客户端断开连接!'')

    def close_room(self, room):
        socketio.close_room(room=self.sid)
        print(''{}-断开连接''.format(self.sid))

    def on_my_event(self, data):
        while True:
            print(data)
            socketio.sleep(5)
            current_date = str(datetime.datetime.now())
            dic = {''current_date'': current_date}
            res_json = json.dumps(dic)
            emit(''server_response'', res_json)


socketio.on_namespace(MyCustomNamespace(''/test''))

if __name__ == ''__main__'':
    socketio.run(app)

Vue 部分

<template>
  <div>

    <h1>websocket连接</h1>
  </div>
</template>

<script>
export default{
  data(){
      return{
          id:''''
      }
  },
  sockets:{
    // 通信的name
    //这里是监听connect事件
    connect: function(){
      this.id=this.$socket.id
      // alert(''建立连接'')
      this.$socket.emit(''my_event'',9999)
    },

    disconnect: function(){
      alert(''断开连接'')
    },

    reconnect: function(){
      console.log(''重新连接'')
      this.$socket.emit(''conect'')

    },
    server_response: function(data){
      
      console.log(''接收数据'',data)
    }
  },
  mounted(){
      this.$socket.emit(''connect''); //在这里触发connect事件
  }
  
}
</script>

<style>
</style>
App.vue
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from ''vue''
import App from ''./App''
import router from ''./router''


Vue.config.productionTip = false

// 引入socket.io
import VueSocketIO from ''vue-socket.io''

// 引入Mint-ui
// import MintUI from ''mint-ui''
// 安装插件
// Vue.use(MintUI);  //里面其实做的就是注册所有的全局组件,给Vue.prototype 挂载一些对象,方便实用,组件内的this.xxx就可以使用了
// 引入css
// import ''mint-ui/lib/style.css''

Vue.use(new VueSocketIO({
    debug: true,
    connection: ''http://127.0.0.1:5000/test''
}))

/* eslint-disable no-new */
new Vue({
  el: ''#app'',
  router,
  components: { App },
  template: ''<App/>''
})
main.js

 

 

GET http:// localhost:3000 / socket.io / socket.io.js 404(未找到)

GET http:// localhost:3000 / socket.io / socket.io.js 404(未找到)

我正在尝试将数据流式传输到浏览器。但是,我正在努力将其连接到浏览器。这是我的html:

<ul></ul>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script>
    var socket = io.connect();
    jQuery(function ($) {
        var tweetList = $('ul.tweets');
        socket.on('tweet',function (data) {
            tweetList .prepend('<li>' + data.user + ': ' + data.text + '</li>'); 
        }); 
    });
</script>

这是我的app.js的相关部分:

var express = require('express'),twitter = require('ntwitter'),http = require('http'),path = require('path');

var app = express();

var io = require('socket.io').listen(app);

app.get('/',function (req,res) { res.sendfile(__dirname + '/index.html'); });

app.listen(app.get('port'),function(){
   console.log("Express server listening on port " + app.get('port'));
});

io.sockets.volatile.emit('tweets',{
            user: data.user.screen_name,text: data.text,geo : geo,latitude: latitude,longitude: longitude
                });

我通过packages.json文件安装了socket.io 0.9.16:

"dependencies": {
    "express": "3.2.6","jade": "*","ntwitter":"0.2.10","socket.io":"0.9.x"
  }

有谁可以帮我离开这里吗?为什么找不到文件?

深入挖掘。为了测试套接字,我将其放在app.js中:

var socket = io.listen(app);

我得到错误:

TypeError: Object #<Manager> has no method 'listen'
    at Object.<anonymous> (/home/andy/dev/node/mytwittermap/app.js:49:17)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:901:3

今天关于Socket.IO-需求未定义需求定义错误的讲解已经结束,谢谢您的阅读,如果想了解更多关于boost::asio 序列16: tcp::socket 和 udp::socket & socket_basic、c# – System.Net.Sockets.SocketException创建websocket连接时、flask-socketio + vue-socket.io 组合使用 demo、GET http:// localhost:3000 / socket.io / socket.io.js 404(未找到)的相关知识,请在本站搜索。

本文标签: