NodeJS 如何在没有 WebSockets 的情况下处理持久连接?

发布于 2024-10-26 07:33:24 字数 312 浏览 1 评论 0 原文

我对 NodeJS 真的很陌生(如果我对某些东西听起来很天真,我很抱歉)并且我一直在深入研究示例的源代码 聊天应用程序

但是,我无法理解一件事。我知道 WebSockets 有助于处理持久的全双工双向连接。但是 NodeJS 如何在不使用 WebSockets 的情况下管理上述聊天应用程序中的持久连接呢?如果 NodeJS 可以处理持久的双向连接,那么在 Node 中集成 Socket.IO 这样的东西到底有什么作用呢?

I'm really new to NodeJS (and I'm sorry if I sound naive about some stuff) and I've been digging into the source code of the example Chat Application.

However, I'm having trouble understanding one thing. I know that WebSockets helps handle persistent full-duplex bi-directional connections. But how does NodeJS manage a persistent connection in the aforementioned chat application without the use of WebSockets? And if NodeJS can handle a persistent bi-directional connection, what exactly is the function of integrating something like Socket.IO in Node?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

淤浪 2024-11-02 07:33:24

除了 WebSocket 之外,您还可以使用长轮询技术在服务器和客户端之间创建持久连接。

长轮询是
传统的投票技术和
允许模拟信息
从服务器推送到客户端。和
长轮询,客户端请求
来自服务器的信息
与普通民意调查类似。然而,
如果服务器没有任何
为客户提供的信息,
而不是发送空响应,
服务器保留请求并等待
以获得一些信息。
一旦信息可用
(或在适当的超时之后),
完整的响应发送至
客户端。

然而,它不如 WebSockets 高效,但它被使用是因为它与 WebSockets 不同,可以在每个浏览器中工作。尝试看看这个文章

将数据千字节数减少到 2
字节......并将延迟从 150 毫秒减少
到 50ms 远远超过边际。在
事实上,仅这两个因素就
足以让WebSocket认真起来
Google 很感兴趣。

Besides WebSockets you can use long polling technique to create persistent connection between server and client.

Long polling is a variation of the
traditional polling technique and
allows emulation of an information
push from a server to a client. With
long polling, the client requests
information from the server in a
similar way to a normal poll. However,
if the server does not have any
information available for the client,
instead of sending an empty response,
the server holds the request and waits
for some information to be available.
Once the information becomes available
(or after a suitable timeout), a
complete response is sent to the
client.

However it's not as efficient as WebSockets, but it's used because it works in every browser unlike WebSockets. Try to look at this article:

Reducing kilobytes of data to 2
bytes…and reducing latency from 150ms
to 50ms is far more than marginal. In
fact, these two factors alone are
enough to make WebSocket seriously
interesting to Google.

飘逸的'云 2024-11-02 07:33:24

我对聊天应用程序不熟悉。我没有看到托管演示的链接。

NodeJS 是一种服务器端技术。它与本机套接字没有任何问题。 Socket.IO 是客户端和服务器端技术的结合。它只是恰好使用 NodeJS 作为服务器端。它的美妙之处在于,它在客户端提供了一个通用的通信 API,而不管浏览器实际具有什么功能。

I am not familiar with the chat application. And I don't see a link for a hosted demo.

NodeJS is a server-side technology. It has no trouble with native sockets. Socket.IO is a combination client-side and server-side technology. It just happens to use NodeJS for the server side. The beauty of it is that it presents a common communications API on the client side, regardless of what features the browser actually has.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文