【问题标题】:Is there an alternate way of sending a private message with Socket.io (1.0+)?是否有另一种使用 Socket.io (1.0+) 发送私人消息的方法?
【发布时间】:2016-03-25 07:15:03
【问题描述】:

我正在开发一个简单的基于会话的应用程序,该应用程序由 URL 中的会话代码共享。我决定为每个连接到套接字的客户端生成并分配一个更短的用户友好的唯一 ID,并且创建会话的客户端使用他的 ID 创建一个 socket.io 房间。

直到后来我才意识到,socket.io 中的私人消息传递机制依赖于每个客户端被分配到一个以他们的 ID 命名的房间。这意味着因为我的会话房间是以创建者的套接字 ID 命名的,所以使用 .to() 不会向该客户端发送消息,而是现在分配给该房间的所有客户端发送消息。

我可以通过需要重新设计的方式来解决这个问题,但首先我想问一下是否有另一种方法可以通过他/她的 ID 向特定客户发送消息。

【问题讨论】:

    标签: node.js socket.io


    【解决方案1】:
    /*create an array of clients, where key is the name of user and value is its unique socket id(generated by socket only, you do not have to generate it) during connection.*/
    var clients = {};
    clients[data.username] = {
    "socket": socket.id
    };
    //on server side
    socket.on('private-message', function(data){
      io.sockets.connected[clients[data.username].socket].emit("add-      message", data);
    });
    //on client side
    socket.emit("private-message", {
    "username": userName,
    "content": $(this).find("textarea").val()
    });
    socket.on("add-message", function(data){
    notifyMe(data.content,data.username);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-10
      • 1970-01-01
      • 2014-10-27
      • 2017-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多