Javascript Socket.io emit不工作,但广播正常
我正在尝试向单个客户端发出通知,但emit似乎根本没有启动,而broadcast.emit工作正常。但问题是广播正在通知所有客户端,即使我提供了socket.id 有人知道我做错了什么吗Javascript Socket.io emit不工作,但广播正常,javascript,socket.io,Javascript,Socket.io,我正在尝试向单个客户端发出通知,但emit似乎根本没有启动,而broadcast.emit工作正常。但问题是广播正在通知所有客户端,即使我提供了socket.id 有人知道我做错了什么吗 var app = express( ); var querystring = require('querystring'); var server = http.createServer(app); var io = require('socket.io').listen(server); var clie
var app = express( );
var querystring = require('querystring');
var server = http.createServer(app);
var io = require('socket.io').listen(server);
var clients = {};
io.sockets.on('connection', function( socket ) {
socket.on( 'subscribe', function( userID ) {
clients[userID] = socket.id;
});
socket.on( 'notifyMsg', function( data ) {
var obj = JSON.parse( data );
for( var i=0; i<obj.info.notifyUserIDs.length; i++ ) {
var to = clients[obj.info.notifyUserIDs[i]];
if( to ) {
// Doesn't work
io.sockets.socket(to).emit( 'notification', data );
// Works
//io.sockets.socket(to).broadcast.emit( 'notification', data );
}
}
});
});
您如何看待将套接字本身存储在客户机散列中并像这样使用它
var app = express( );
var querystring = require('querystring');
var server = http.createServer(app);
var io = require('socket.io').listen(server);
var clients = {};
io.sockets.on('connection', function( socket ) {
socket.on( 'subscribe', function( userID ) {
clients[userID] = socket;
});
socket.on( 'notifyMsg', function( data ) {
var obj = JSON.parse( data );
for( var i=0; i<obj.info.notifyUserIDs.length; i++ ) {
var to = clients[obj.info.notifyUserIDs[i]];
if( to ) {
to.emit( 'notification', data );
}
}
});
});
嗨,我也试过了,但发射根本就不点火。我还尝试console.logto并获取对象输出{id:'BErkIOeBJP2lsU2OMJxn',命名空间:{manager:{server:[object],命名空间:[object],套接字:[Circular],_事件:[object],设置:[object],握手:[object],连接:[object],打开:[object],已关闭:{},文件室:[Object],文件室客户端:[Object],旧侦听器:[Object],序列号:1714461803,gc:[Object]},这对我来说很好。你能嗅探有线通讯吗?我的意思是,这个套接字看起来很好,所以它可能会发送一些东西到某个地方。对不起,如何嗅探有线通讯?你可以在你这边测试它吗?我的客户端只是一个套接字。在“通知”中,函数res{console.logbrowser=+res};我的意思是在服务器端。以ngrep为例。遗憾的是,我在这里使用的是windows: