我正在使用 nodejs 为应用程序制作原型。但这个问题涉及假设的大规模推广。对服务器和/或带宽的要求更高:WebSocket 保持活动连接还是重复的客户端 HTTP GET 请求?
例如(也许是一个极端的例子),Twitter 允许其客户端每 20 秒向其 API 发送一次 GET 请求,还是让每个客户端都连接到 HTTP1.1 websocket,这样效率更高?每 1 分钟或更长时间,或更短时间呢?
顺便说一句,也许这并不重要,但假设 GET 请求将由 nginx 按照节点的方式处理,这会有所不同吗?
答案1
WebSockets 更好,因为您可以保持连接打开,并且不会在每次请求和响应后发送额外的协议标头和其他内容。查看本文:
在使用 WebSocket 建立连接期间,客户端和服务器每帧交换 2 个字节的数据,而进行连续轮询时则需要 8 千字节的 http 标头。
答案2
websockets 是一个更好的选择,但它还没有在所有浏览器中实现。如果你选择这种方式,你会想要使用套接字IO在客户端和 node.js 端。如果浏览器尚不支持 websockets,这将提供到 flash 套接字的故障转移。
您可以从 websockets 中获益,因为发送回服务器的数据并不像 get 请求那么大。