【问题标题】:Sending notification using node.js + socket.io使用 node.js + socket.io 发送通知
【发布时间】:2017-05-27 01:18:26
【问题描述】:

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

在客户端我发送到服务器来监听

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

在节点上

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(登录其他浏览器),它不会向该用户发送任何内容。

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

【问题讨论】:

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


    【解决方案1】:

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

    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)
    });
    

    【讨论】:

    • 你好 Jack,非常感谢你的回答,只是有点疑问,我什么时候使用 io.to(data.user_id),谁节点会识别发送哪个用户
    • 我的错误是你需要传递的socketId
    • 你可能需要在socketId和userId之间做一个映射,看看这个答案stackoverflow.com/questions/6563885/…
    • 杰克你能帮我解决另一个问题吗
    • 确定打开另一个问题并标记我
    猜你喜欢
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 2012-07-18
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多