【发布时间】: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