node.js - Socket.io - 如何使用监听器

标签 node.js socket.io

我已经四处寻找关于这个问题的答案,我不确定我是否以正确的方式处理这个问题。

我有一个 node.js 应用程序,它使用 socket.io 从 Node 服务器向客户端推送和接收数据。发送到 nodejs 的请求大部分是通过 HTTP 请求,而推送到网站的数据是通过套接字接收的。

我目前为每个单独的监听器都有唯一的命名空间(例如,我有一个带有评论的提要,这意味着我有 feed/{ID} 作为监听器以及每个评论都有 comment/{COMMENTID}这意味着如果有 25 个提要帖子,我将有 26 个(包括提要)监听器监听仅供稿。

我不完全确定 socket.io 如何通过监听器推送数据(每个监听器都是一个新套接字吗?)。在我看来,如果我在某一时刻有大量用户在线并且只有一个评论监听器,它将被无用的、不相关的数据多次击中——与现在相比,它只会接收与用户相关的数据。

设置监听器的最佳方式是什么?

多听众还是少听众有益?

最佳答案

这是使用监听器的糟糕方式。你应该只使用

  • socket.on('feed',feed)
  • socket.on('评论',评论)

当你想发送数据给 feed 监听器时,使用“socket.emit('feed',{id:1})”。 当你想向评论监听器发送数据时,使用“socket.emit('comment',{commentid:1})”

这会将您减少到只有 2 个听众。

关于node.js - Socket.io - 如何使用监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20013336/

相关文章:

javascript - 客户端未在 Socket.IO 中接收事件

javascript - 使用 Node.js 库从平衡支付中获取 JSON 数据

security - Socket.io 安全问题

Django、socket.io、node.js - 管理私有(private)消息和群组对话

python - flask_mail,邮件卡在线程上,从未发送过

angular - 是什么决定了Socket IO的Angular区域

javascript - 防止node-oracledb中的SQL注入(inject)

javascript - IBM Cloud Function 不产生输出

node.js - sails.js View 未加载

node.js - 使用 Vows 测试 Mongoose 模型