Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在没有WebSocket的情况下,NodeJ如何处理持久连接?_Javascript_Node.js_Websocket - Fatal编程技术网

Javascript 在没有WebSocket的情况下,NodeJ如何处理持久连接?

Javascript 在没有WebSocket的情况下,NodeJ如何处理持久连接?,javascript,node.js,websocket,Javascript,Node.js,Websocket,我对NodeJS真的很陌生(如果我对某些东西听起来很幼稚,我很抱歉),我一直在深入研究示例的源代码 然而,我很难理解一件事。我知道WebSocket有助于处理持久的全双工双向连接。但是NodeJS如何在不使用websocket的情况下管理上述聊天应用程序中的持久连接呢?如果NodeJS能够处理持久的双向连接,那么在Node中集成Socket.IO之类的东西的功能到底是什么呢?我不熟悉聊天应用程序。我看不到托管演示的链接 NodeJS是一种服务器端技术。本机套接字没有问题。IO是客户端和服务器端技

我对NodeJS真的很陌生(如果我对某些东西听起来很幼稚,我很抱歉),我一直在深入研究示例的源代码


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

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


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

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

长轮询是 传统轮询技术及其应用 允许对信息进行仿真 从服务器推送到客户端。具有 长轮询时,客户端请求 来自服务器的信息以 类似于普通民意测验。然而, 如果服务器没有任何 可供客户使用的信息, 而不是发送一个空的响应, 服务器保存请求并等待 获取一些可用的信息。 一旦信息可用 (或在适当的超时之后),a 将完整的响应发送到 客户

然而,它的效率不如WebSocket,但它之所以被使用,是因为它在每个浏览器中都能工作,而不像WebSocket。试着看看这个:

将千字节数据减少到2 字节…并将延迟从150毫秒减少到150毫秒 到50毫秒远超过边际。在里面 事实上,单是这两个因素就很重要 足以使WebSocket严重受损 谷歌很感兴趣


聊天应用程序托管在,所以你的意思是,只使用NodeJS就可以模拟Socket.Io提供的所有功能?不,这不是我想说的。我的意思是,你可以,通过重写socket.io,聊天应用程序使用长轮询。您可以使用大量服务器端技术进行长时间轮询;不仅仅是NodeJS。哦,我不知道它使用了长轮询!谢谢你的指点!它使用长轮询作为其回退技术之一。它尝试WebSockets,如果不支持,则尝试FlashSockets,如果不支持,则采用各种老式的Comet方法。