1

有一个代码行:

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

它给了我例外:

TypeError: Object #<Namespace> has no method 'socket'

我的连接事件:

io.sockets.on('connection', function(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) {});
4

1 回答 1

3

与 express 一起使用的套接字服务器创建。查看http://socket.io/docs/了解更多信息和帮助。

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.

        });
    });

对于您尝试创建的发射(我下面的示例将通过提供 .to(socket.id) 仅向连接的套接字广播)

io.to(socket.id).emit('counter', {all : data.all, dialog : data.dialog});
于 2014-10-28T20:39:08.313 回答