0
我试图实现一个小聊天应用程序,用户可以发送消息到特定的Id或一组Id。我浏览了socketio文档并找到了合适的解决方案。我试过这个功能Socketio广播到选定的socket.id,而不是使用房间和命名空间socket.io
socket.broadcast.to(socketid).emit('message', 'for your eyes only');
但它没有工作。
let onlineUsers = [];
let sockets = {};
module.exports = function (io,app) {
io.on('connection', (socket) => {
// Event for user connecting to socket
socket.on('online', (data) => {
if(data.username!=null){
socket.name = data.username;
onlineUsers.push(data.username);
sockets[data.username] = socket.id;
console.log(data.username+' online');
}
});
socket.on('Chat', (data) => {
socket.broadcast.to(sockets[data.receiver]).emit('message',data.message);
socket.leave(name);
console.log('message sent');
});
// Event for user going ofline
socket.on('offline',() => {
for (var i = 0, len = onlineUsers.length; i < len; i++) {
if (onlineUsers[i] && onlineUsers[i].username === socket.name) {
onlineUsers.splice(i, 1);
delete sockets[socket.name];
socket.broadcast.emit('offline', {
username: socket.name
});
}
}
console.log('offline');
});
}
但是当你有一个正确的socketid它的工作原理。我使用相同的:) – Lycidias
当它不工作,你需要告诉我/我们你使用的版本,也许“一点”更多的代码;) – Lycidias
@Lycidias我已经更新了我的代码。我需要知道什么时候它不会抛出任何错误,但没有任何反应。 – TRomesh