[英]Socket.io emit doesn't work but broadcast is fine
我正在尝试向单个客户端发出通知,但是尽管broadcast.emit可以正常工作,但似乎根本不会触发该发出。 但是问题是即使我提供了socket.id,广播也会通知所有客户端。
有人知道我做错了什么吗?
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 );
}
}
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.