2

我正在使用带有 Express 的 Node.js 服务器,并希望执行以下操作:

  • 客户端调用带有 ID 的 URL(例如localhost/show/:projectID
  • 每个调用相同 ID 的客户都应该进入同一个“组”
  • 新消息应该只推送到同一“组”中的客户端,而不是调用具有另一个 ID 的 URL 的客户端

这如何在 Socket.IO 中完成?(我已经读过“房间”,但我不知道如何将它们与 URL 一起使用)

4

1 回答 1

2

在尝试了一些之后,.handshake我得出了一个类似于 GeoPhoenix 建议的解决方案。
我不知道我的解决方案有多好,但它确实有效。这是代码:

io.sockets.on('connection', function (socket) {
  var ref = JSON.stringify(socket.handshake.headers.referer);
  socket.join(ref);
  io.sockets.in(ref).emit('news', {hello: "world"});
});

一旦客户端连接了他使用的 URL,他使用的 URL 就会被保存到ref并加入一个以该 URL 命名的房间(当然,可以进一步处理 URL 以获得更好的房间名称,但这不是解决方案工作所必需的)。

于 2013-04-28T08:37:09.527 回答