【问题标题】:Sending/Emitting a message to a single specific client using node.js asocket.io使用 node.js asocket.io 向单个特定客户端发送/发送消息
【发布时间】:2015-08-10 12:04:51
【问题描述】:

我目前开始使用 node.js,作为第一个小项目,我决定编写一个小聊天应用程序。我正在使用socket.io,到目前为止,我已经按照http://socket.io/get-started/chat/ 上的聊天教程进行操作。现在我想扩展脚本,但我卡住了。

我不明白 socket.io 如何(或者根本不知道)如何管理服务器端所有连接的客户端。我可以使用io.emit 函数向所有连接的用户发送消息。但是,如果我想向特定用户发送消息怎么办?

我当然可以通过向所有客户端发送消息来“伪造”它,然后在客户端检查标识符等,并且只有在匹配时才处理消息。但这仍然会向所有人发送消息,并且很容易被没有 JS 知识的用户绕过。

出于安全原因,“过滤”/“定位”需要在服务器端进行。但是我看不到/理解 socket.io 是如何(或者根本没有)实际管理所有客户端连接的。有没有办法获取所有当前连接的客户端的列表?你能在一个循环中对所有连接的客户端进行交互吗?您可以为连接分配自定义标识符/名称吗?并且 - 作为实际应用 - 然后您可以向单个连接的用户发送/发送消息吗?

【问题讨论】:

    标签: javascript node.js sockets websocket socket.io


    【解决方案1】:

    在建立新连接时,每个套接字连接都有一个唯一的套接字 ID。您可以使用该特定 ID 发出数据。

    var socketId=socket.id;
    socket.broadcast.to(socketId).emit("messageToReceiver",data);
    

    因此,您可以将其发送给特定的人。

    要获取所有连接的客户端,请检查以下 URL: Socket.IO - how do I get a list of connected sockets/clients?

    【讨论】:

    • 以后如何找到这个 socket.id 并在需要时引用它是一个更加难以捉摸的概念。
    • 用用户名存入数据库
    猜你喜欢
    • 2012-05-24
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多