javascript - 通过 node.js 和 socket.io 在两个用户之间发送消息

标签 javascript node.js socket.io

我是 node.js 和 socket.io 的新手

我有两个客户,他们的 ID 为 1 和 2。 我需要通过 socket.io 发送包含以下内容的数据: user_from, user_to, Action

并且数据从双方发送。

我如何使用 socket.emit() 从客户端 1 发送此数据,以便我可以设置变量:数据?

如何使用 socket.get 读取服务器上的数据?

然后再次从服务器发送到客户端 2? (我找到了这段代码:io.sockets.volatile.emit( 'broadcast_msg' , msg ); 但我只想将它从特定用户发送到特定用户,而不是所有连接的用户。)

谢谢你的帮助,我看到了很多例子,但不是我需要的。

更新:

我不明白这段代码:

// on server started we can load our client.html page
function handler(req, res) {
  fs.readFile(__dirname + '/client.html', function(err, data) {
    if(err) {
      console.log(err);
      res.writeHead(500);
      return res.end('Error loading client.html');
    }
    res.writeHead(200);
    res.end(data);
  });
}

为什么我需要这样做?我有 ex: index.php?menu=30 或 index.php?menu=30&action=12

最佳答案

您正在寻找路由功能。 socket.io 提供的是点对点通信。例如从 1 个客户端到服务器。

因此从逻辑上讲,您需要服务器来路由消息,这意味着消息应该具有寻址信息(例如目标收件人的 ID)。然后,这可以用于路由消息,例如,创建(自定义)用户特定的事件以根据传入消息的目标用户触发。

如果您正在构建任何需要扩展的东西,也许您应该看看像 RabbitMQ 这样的消息传递框架。它恰恰意味着在分布式实体(如用户)之间路由消息。

干杯!

关于javascript - 通过 node.js 和 socket.io 在两个用户之间发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12213713/

相关文章:

javascript - 更新 three.js 中的 ShaderMaterial 属性

javascript - 用jquery打印出data属性值

javascript - 如何将 Ajax 选项卡控件内的文本框读入 javascript 函数

node.js - BitTorrent 协议(protocol)有问题

node.js - 合并node.js模块导出中的多个回调

javascript - Web Audio API 事件是否在单独的线程中运行?

javascript - 没有 Express 的简单 Node.js 服务器 - 管道 HTML 文件以响应

node.js - 在客户端重新启动socket.io

JavaScript、对象和并发

node.js - WebSocket 协议(protocol)激活前的 4 或 5 个轮询请求