Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Socket.io向套接字发送消息时出错_Node.js_Socket.io_Socket.io 1.0 - Fatal编程技术网

Node.js Socket.io向套接字发送消息时出错

Node.js Socket.io向套接字发送消息时出错,node.js,socket.io,socket.io-1.0,Node.js,Socket.io,Socket.io 1.0,有一个代码行: io.sockets.socket(socketid).emit('counter', { all : data.all, dialog : data.dialog }); 这给了我一个例外: TypeError: Object #<Namespace> has no method 'socket' 为什么对象套接字为否 完整代码: var socketio = require('socket.io'); var server = http.createServe

有一个代码行:

io.sockets.socket(socketid).emit('counter', { all : data.all, dialog : data.dialog });
这给了我一个例外:

TypeError: Object #<Namespace> has no method 'socket'
为什么对象套接字为否

完整代码:

var socketio = require('socket.io');
var server = http.createServer(app).listen(8181, function(){
    console.log("Express server listening on port "+ app.get('port') +" in "+ app.get('env') +" mode.");
});

var io = socketio.listen(server);
io.on('connection', function(socket) {});

创建用于express的套接字服务器。查看以获取更多信息和帮助

var app = require('express').createServer();
var io = require('socket.io')(app);

app.listen(8181);

io.on('connect', function(socket) {
    socket.on('example', function(data) {
        //parse the data, do something, create response data object, etc.

    });
});
并且使用HTTP+Express

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);

server.listen(8181);

io.on('connect', function(socket) {
        socket.on('example', function(data) {
            //parse the data, do something, create response data object, etc.

        });
    });
对于您试图创建的emit(我下面的示例将通过提供.to(socket.id)只向连接的套接字广播)


我在没有io.sockets的情况下尝试了您的示例-错误是相同的您是否将io拉入了服务器<代码>变量io=require('socket.io')这将在server.js文件中。是的,在顶级脚本中有:
socketio=require('socket.io')
var io=socketio.listen(服务器)好吧,这似乎是一个微不足道的修复,但请幽默我。查看我们编写的最新套接字服务器,我有以下设置代码:
var io=require('socket.io')
var server=require('https')。创建服务器(选项,应用程序)。侦听(端口);//记住您的端口要求('./config/sockets').start(io.listen(server))您可以将io.listen(服务器)与此代码一起使用(我们将套接字代码抽象为config/sockets)。我认为您的完整代码中缺少了一些内容,例如express require。请看上面的完整代码示例,然后我强烈建议使用我提供的socket.io docs链接。
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);

server.listen(8181);

io.on('connect', function(socket) {
        socket.on('example', function(data) {
            //parse the data, do something, create response data object, etc.

        });
    });
io.to(socket.id).emit('counter', {all : data.all, dialog : data.dialog});