有没有一种简单的方法可以将 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动态更改为脚本