【发布时间】:2012-02-12 17:38:56
【问题描述】:
我正在构建一个动态搜索(每次击键都会更新):我当前的方案是在每次击键时向服务器发送一个新的 AJAX 请求并以 JSON 格式取回数据。
我考虑为每个搜索“会话”打开一个 WebSocket 以节省一些开销。 我知道这会节省时间,但问题是,考虑到这些参数,它真的值得吗: 80ms 平均 ping 时间 166ms:每次击键之间的时间,假设用户打字相对较快 最坏情况下的传输速率为 1MB/s,每次击键时必须接收的每个数据包不超过 1KB。 该应用还需要大约 30-40 毫秒的时间将搜索结果焊接到 DOM。
我发现了这个:HTTP vs Websockets with respect to overhead,但这是一个不同的用例。
除了纯 HTTP 开销之外,websockets 会减少什么吗? HTTP 开销是多少(假设没有 cookie 和最少的标头)?
我猜 HTTP 请求会在每个请求上打开一个新的网络套接字,而 WebSocket 允许我们一直只使用一个。如果我的理解是正确的,那么打开一个新的网络套接字的实际开销是多少?
【问题讨论】:
-
当服务器向客户端推送消息时,websockets 是值得的
-
我之前做过类似的事情,发现为了加快速度,您可能希望将 Ajax 请求延迟几毫秒,然后在用户键入另一个键时取消它。然后,如果用户快速键入,您将发出一个请求而不是多个请求。 (虽然这实际上并没有回答你关于 websockets 的问题!)
-
这就是我现在正在做的事情。它完美无缺,但我担心当我部署它时,该应用程序可能会开始在较慢的 ping 时间上挣扎。查看实际应用:77.70.33.151:8233 您可以搜索“firefox”、“chromium”或“mozilla”等内容。
-
HTTP 请求不在每个请求上打开一个新的网络套接字。
标签: javascript http node.js websocket overhead