【问题标题】:Ajax or Websockets for small transmissions用于小型传输的 Ajax 或 Websockets
【发布时间】:2015-05-11 03:21:41
【问题描述】:

我正在构建一个使用Websockets(Socket.io) 向服务器发送和接收消息的聊天网站。事实上,我的网站应该使用Websocket,现在我的问题是,对于其他传输,例如在登录时检查用户名或获取JSON 和更新DOM 和其他东西,我可以使用相同的技术(Websockets)还是我必须使用Ajax?我知道以Websockets 方式,服务器和客户端将具有持久连接。

最好的方法是什么?使用Websockets 不适合这些目的?为什么?

【问题讨论】:

  • 如果您正在管理一个包含 websockets 和聊天系统的站点,那么您也应该熟悉 ajax,因为在这样的站点上将更频繁地需要 ajax,并且因为在任何情况下都使用 websockets并且所有异步请求对于浏览器和服务器来说都是不必要的开销。
  • 记住websockets不支持捕获,如果你打算提供任何大小的静态内容,你应该使用ajax。

标签: javascript html ajax websocket socket.io


【解决方案1】:

您可以使用网络套接字。不同之处在于客户端始终连接的 websockets。当消息从客户端流入时,您将拥有一个处理程序来处理消息(可能只是带有某种 messageType 字段的 json blob)。

这意味着服务器端的处理基本上是相同的,除了通过不同的 HTTP 请求(通过不同的路由)提供响应之外,您通过不比 switch 语句复杂得多的方式将请求分派给适当的处理程序。然后任何结果都会通过具有类似处理机制的 websocket 发送回客户端。

一个缺点是并非所有浏览器都支持 websocket,因此如果您需要支持 JSON 的后备路径,那么使用后备 JSON 处理程序来处理 aux 请求肯定更容易(因为无论如何您都会编写它们)。

否则差异可能很小。我会更关心代码的清洁度。

【讨论】:

    猜你喜欢
    • 2017-12-15
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 2015-10-14
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多