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

时间:2011-03-25 04:09:21

标签: javascript node.js websocket

我是NodeJS的新手(如果我对某些内容听起来很天真,我很抱歉)并且我一直在深入研究示例Chat Application的源代码。

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

2 个答案:

答案 0 :(得分:8)

除了WebSockets,您还可以使用long polling技术在服务器和客户端之间创建持久连接。

  

长轮询是一种变体   传统的民意调查技术   允许模拟信息   从服务器推送到客户端。同   长轮询,客户要求   来自服务器的信息   与普通民意调查类似的方式。然而,   如果服务器没有   为客户提供的信息,   而不是发送空响应,   服务器保存请求并等待   有些信息可供使用。   一旦信息可用   (或在适当的超时后),a   完整的回复发送到   客户端。

然而,它不如WebSockets有效,但它被使用,因为它适用于每个浏览器,而不像WebSockets。试着看看这个article

  

将千字节数据减少到2   字节...并减少150毫秒的延迟   到50ms远远超过边际。在   事实上,这两个因素本身就是   足以让WebSocket认真对待   谷歌很有意思。

答案 1 :(得分:2)

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

NodeJS是一种服务器端技术。它与原生套接字没有问题。 Socket.IO是客户端和服务器端技术的组合。它恰好在服务器端使用NodeJS。它的优点在于它在客户端提供了一个通用的通信API,无论浏览器实际具有哪些功能。