有没有一种简单的方法可以将 Ajax 更改为 WebSocket?

Posted

技术标签:

【中文标题】有没有一种简单的方法可以将 Ajax 更改为 WebSocket?【英文标题】:Is there an easy way to change Ajax into WebSocket? 【发布时间】:2017-03-17 10:07:01 【问题描述】:

请注意我的要求,我知道如何编写和运行 WebSocket 服务器。

我的问题是,我使用Ajax连接服务器很久了,因为我使用jQuery,它提供了一个易于使用的$.ajax()方法。

但是现在,我的网站可以在 WebSocket 模式下运行,这意味着我可以使用 Ajax 做的所有事情,现在都可以使用 WebSocket 了。

但我不知道有没有像$.ajax()这样简单的连接服务器的方法,它可以帮助我轻松地从Ajax更改为WebSocket

【问题讨论】:

使用socket.io之类的东西 您可以参考***.com/questions/10377384/… 由于它们是根本不同的协议,因此可能没有微不足道的过渡。您可以重新实现 websockets 中的所有功能并创建与 $.ajax 迄今为止的对应功能完全相同的函数,然后将所有对 $.ajax 的函数调用替换为您的新函数……但实际上:为什么? Ajax 的优点之一是可以轻松缓存请求,并且不会为打开的连接占用服务器资源。如果您不需要双向通信(显然您不需要),那么为什么要替换它呢? 【参考方案1】:

今天 WebSockets 可以在我们使用 AJAX 的地方使用,但是两者的目标不同

AJAX/XHR 用于网页异步获取/发送资源/数据。

WebSockets 用于其他目的,这里的目的是在两个实体之间打开连续的双工通信,以交换消息。

WebSockets Tools

µWebSockets:用于 C++11 和 Node.js 的高度可扩展的 WebSocket 服务器和客户端实现。

Socket.IO:用于 Node.js 的基于长轮询/WebSocket 的第三方传输协议。

WebSocket-Node:Node.js 的 WebSocket 服务器 API 实现。

Total.js: Node.js 的 Web 应用程序框架(示例:WebSocket 聊天) Faye:用于 Node.js 服务器和客户端的 WebSocket(双向连接)和 EventSource(单向连接)。

SignalR: SignalR 将在 WebSockets 可用时在后台使用它,并在它不可用时优雅地回退到其他技术和技术,而您的应用程序代码保持不变。

Caddy:能够将任意命令(stdin/stdout)代理为 websocket 的 web 服务器。

【讨论】:

以上是关于有没有一种简单的方法可以将 Ajax 更改为 WebSocket?的主要内容,如果未能解决你的问题,请参考以下文章

将 EXTJS AJAX 方法从 GET 更改为 POST 将导致任何性能问题

jquery tokenInput如何将ajax调用url动态更改为脚本

使用 javascript 没有 jQuery 的简单 ajax 表单

将打印媒体的引导网格从 col-xs 更改为 col-sm

将突出显示的文本更改为不同的颜色

当 PrimeFaces ajax 请求正在进行时,将鼠标光标更改为忙碌模式