2

我正在使用 node.js 来拥有多个客户端。现在,在我的代码中,我正在监听一个端口,每次客户端连接时,我想向所有其他客户端发送一条广播消息,比如说。每次有新客户连接时,我都会发起一个新事件,并且我会向他发送响应。当我说 response.end() 时,之后我无法向该特定客户端发送任何内容。但是,浏览器一直在加载并等待 response.end。在不使用 socket.io的情况下是否有这个问题?我知道 socket.io 有它的用途,但我真的很想知道我是否可以在没有 socket.io 的情况下做到这一点。

4

3 回答 3

0

如果您不发送 .end() ,浏览器将继续等待。但是,如果您关闭通道,您将无法通过它发送任何内容。因此,要么使用 socket.io,要么通过 XHR 打开一个通道,并保持它为每个客户端打开以接收消息。不过,由您决定是否充分构建消息(实现您的应用协议)。我认为保罗是对的。

于 2011-07-25T20:34:21.263 回答
0

尝试长轮询,这意味着让来自浏览器的 ajax 请求“挂起”,直到服务器可以发回一些东西。

如何实现基本的“长轮询”?

使用 nodejs,您可以轻松地为客户端存储响应对象。

于 2011-07-25T22:58:03.017 回答
0

我想说在您的客户中使用两个渠道;一个接收更新(通道保持打开,或经常查询更新),一个刷新数据。它涉及您的一些工作来重组客户端和服务器,但我认为使用两个通道是解决您的问题的最干净的方法。

于 2011-07-25T20:26:08.133 回答