javascript - 使用node.js + socket.io 发送通知

标签 javascript jquery node.js push-notification socket.io

我正在尝试使用 Node.js + soket.io 发送通知

在客户端,我向服务器发出监听

socket.emit('send to server',{user_id:user_id,other_stuff:other_stuff})

在 Node 上

socket.on('send to server',function(date){ socket.emit('notification_'+user_id,'test data'); });

在客户端监听通知

socket.on("notification_<?php echo $_SESSION['user_id'];?>",function(date){alert(data)});

问题是它不向其他用户发送通知

如果我在发出“发送到服务器”期间传递我自己的 user_id,那么它会返回给我自己,但如果使用其他 user_id(登录到其他浏览器),它不会向该用户发送任何内容。

请指出当发生某些操作时我如何向不同的用户发送通知。

最佳答案

如果您想向同一命名空间下的其他用户发送通知:

socket.on('send to server',function(data){ 
        socket.broadcast('notification','test data'); 
    })

仅适用于特定用户(sockets.io 1.x)

socket.on('send to server',function(data){ 
    socketId =  getSocketIdFromUserId(user_id);
    io.to(socketId).emit('notification', 'test data');
 })

无需将 id 与监听器的名称连接起来 在客户端:

socket.on('notification',function(data){
    alert(data)
});

关于javascript - 使用node.js + socket.io 发送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26593695/

相关文章:

javascript - 如何像 Facebook 一样快速地显示图片?

node.js - VSCode 调试 (F5) React 应用程序给出 SyntaxError : Unexpected identifier

javascript - 在溢出 : auto 的 div 中仅滚动一次 'var distance'

javascript - 如何从div获取内部id/class?

javascript - 通过 JavaScript 更新 ASP.NET 中的隐藏字段

javascript - 两张单独 table 上的 Td 高度

javascript - 在Electron JS中无法使用 Remote 关闭窗口

node.js - 如何阻止 Jenkins 在每次构建后重置用户权限?

javascript - 防止脚本根据屏幕尺寸执行

javascript - 展平对象的嵌套数组,将键重命名为迭代器