websocket与头连接保持活动=百万的http有何不同

websocket与头连接保持活动=百万的http有何不同,websocket,Websocket,HTTP头是否也会导致连接长时间保持打开状态?那么优势是什么呢 谁能帮我澄清一下吗?我想,我似乎错过了这个概念。在TCP/IP级别,它看起来是一样的:一个套接字是打开的 但从浏览器的角度来看,它们完全不同。“保持活动”是指浏览器可重复使用以请求更多内容(例如图像、css文件、网站的下一页)。WebSockets用于Javascript应用程序代码中的双向通信。服务器可以选择随时发送内容。JS应用程序可以随时向服务器发送数据 同样值得与SSE(也称为EventSource)相比,SSE也允许服务器

HTTP头是否也会导致连接长时间保持打开状态?那么优势是什么呢


谁能帮我澄清一下吗?我想,我似乎错过了这个概念。

在TCP/IP级别,它看起来是一样的:一个套接字是打开的

但从浏览器的角度来看,它们完全不同。“保持活动”是指浏览器可重复使用以请求更多内容(例如图像、css文件、网站的下一页)。WebSockets用于Javascript应用程序代码中的双向通信。服务器可以选择随时发送内容。JS应用程序可以随时向服务器发送数据

同样值得与SSE(也称为EventSource)相比,SSE也允许服务器选择在任何时候发送内容,但它是单向的(您的JS应用程序在需要发送更多数据时必须使用XHR)。(对WebSocket和SSE的全面比较可能会变得非常复杂,因此我在这里不再赘述,只想说SSE通常是正确的选择。)


还可以与服务器推送HTTP/2(又名SPDY)进行比较。这是为了让服务器主动推送文件(图像、css文件、站点上的下一页),但它又是在浏览器级别,不受Javascript控制。

所以您在内容中说:保持活动服务器仅在浏览器请求时发送数据。当连接打开时,它不断地请求,而在web套接字浏览器中,它不必请求服务器在需要时发送。如果需要,您可以手动请求/告诉服务器发送。我认为浏览器不会“持续请求”。(虽然如果有一个javascript循环每秒加载一个新图像,那么我想它会一直很忙。)还要记住,如果要获取大量内容,http/1.1通常会与服务器建立6个连接。(我知道你的问题是理论性的,但总的来说,很长的保持生存时间几乎肯定是个坏主意。)我想我明白了,即使是在长轮询/http中。。为了使客户端与服务器通信,它需要发送http req。服务器可能会和客户机对话。但连接超时,最终必须进行不必要的连接。但我看到有人说websocket让更多的客户共享空间。“人们说websocket让更多的客户共享空间”,我不知道这是什么意思。你有链接或其他什么吗?要做这样的比较,你需要更精确地比较你正在比较的东西;还有你在优化什么(内存?)。正如我所回答的,从浏览器到服务器的保持活动的http连接服务于不同的目的,所以无论如何比较都有点奇怪。但是,如果你的WebSocket服务器是PHP实例,那么它也使用了一个线程和2MB(或者任何东西)。帮助我的链接:-------例如,在NoDE.js中,你可以为不同的套接字连接共享相同的内存,这样它们就可以访问共享变量。因此,你不需要在中间使用数据库作为交换点。(如AJAX或长轮询,例如PHP)。您可以将数据存储在RAM中,甚至可以直接在套接字之间重新发布。”