【发布时间】:2011-08-20 11:16:20
【问题描述】:
当我为我的应用程序命名时,我遇到了一个问题,我想将数据发送到特定的套接字,这是我正在使用的代码的缩写版本:
var io = require('socket.io').listen(config.web.port);
var chat = io.of('space').on('connection', function (socket) {
// This works:
// Input: xhr-polling received data packet 5::/space:{"name":"test"}
// Output: xhr-polling writing 5::/space:{"name":"test","args":[{"msg":"test"}]}
socket.on('test', function(){
socket.emit('test',{msg: "test"});
});
// This fails:
// Input: xhr-polling received data packet 5::/space:{"name":"test2"}
// Output: xhr-polling writing 5:::{"name":"test2","args":[{"msg":"test2"}]}
socket.on('test2',function(){
io.sockets.socket(socket.id).emit('test2',{msg: "test2"});
});
}
如您所见,第二个缺少输出中的命名空间部分。在真正的应用程序中,我从客户端管理器中选择套接字 id,因此我在这段代码中使用 socket.id 而不是 client.getSocketId(),但这个想法与我只是在回应源客户端在这里。
如何使第二种方法在输出到客户端时使用正确的命名空间?
【问题讨论】:
标签: javascript node.js socket.io