我想要摆脱所有客户端Ajax调用(jQuery),而是使用永久套接字连接(Socket.IO).
因此,我将使用事件侦听器/发射器客户端和服务器端.
防爆.用户在浏览器中触发click事件,客户端发射器通过套接字连接将事件推送到服务器.服务器端侦听器对传入事件做出反应,并将"完成"事件推送回客户端.客户端的侦听器通过DIV元素中的淡入淡出对传入事件做出反应.
这有道理吗?优点缺点?
之前已经提出了类似的问题,他们都得出结论,AJAX不会过时.但是ajax在哪些方面比websockets更好?
使用socket.io,很容易回退到闪存或长轮询,因此浏览器兼容性似乎不是问题.
Websockets是双向的.如果ajax发出异步请求,websocket客户端会向服务器发送消息.POST/GET参数可以用JSON编码.
那么使用100%websockets有什么问题?如果每个访问者都与服务器保持持久的websocket连接,那么在整个访问会话中制作一些ajax请求会更浪费吗?
我使用此代码构建我的websocket连接(例如):
var socket = new WebSocket("ws://94.12.176.177:8080");
Run Code Online (Sandbox Code Playgroud)
我关闭了这个连接:
socket.close();
Run Code Online (Sandbox Code Playgroud)
但是如何重新建立连接?
我做了一些研究并尝试了几种方法.这个问题无法帮助我:断开连接时Socket.io重新连接? 这是唯一接近我正在寻找的结果.
我想这样做的原因是允许用户暂时停止向网络发送数据,并在一段时间后再次重新发送.如果没有重新连接,用户必须刷新页面才能重新发送.这可能会导致一些数据丢失.谢谢.
我正在重新设计一个Web应用程序,该应用程序以前已经在服务器端呈现给单页应用程序并开始阅读有关websockets的内容.Web应用程序将使用套接字将新记录和/或消息推送到客户端.我一直在想为什么大多数使用套接字的页面都不能处理它们在套接字上的所有通信.除了websocket之外,大多数时候都有RESTful后端.让客户端通过套接字查询新资源是不是一个坏主意?如果是这样,为什么 - 除了RESTful api可能更容易与其他设备一起使用?
我可以想象,如果网络连接像移动设备那样糟糕,使用websockets可能不是最好的想法,但是这可能应该与网络的合理连接很好地工作.
我发现了这个相关的问题,但它是从2011年开始看起来有点过时了: websocket api取代了rest api?
我有一个单页应用程序,当前使用ajax和REST与服务器进行通讯。我主要使用Promise和Deferreds构建代码,并使用pubsub代理在组件之间进行通信。通常,代码的结构遵循Zakas关于可伸缩应用程序体系结构的建议。
我想将与服务器的至少某些交互移动到websocket中,以提高性能并简化开发。我打算更改为使用Websocket的一些特定交互方式是:
我的问题是:
谢谢。
编辑
Hera是我提交此书后发现的一些相关问题。这些与我的问题的最后一部分最紧密地联系在一起(100%的websocket是否有意义)。