1.本质不同
HTTP协议本身的单向性问题:请求必须由客户端向服务端发起,然后服务端进行响应。(http是基于tcp协议的)
这个request-response的关系是无法改变的。对于一般的网页浏览和访问当然没有问题,一旦我们需要服务端主动向客户端发送消息时就麻烦了,因为此前的tcp链接已经释放,根本找不到客户端在哪。
ajax,即异步的JavaScript和XML,是一种创建交互式网页应用的网页开发技术
websocket 是HTML5一种新的协议,实现了浏览器和服务器全双工通信。其本质是先通过HTTP/HTTPS协议进行握手后创建一个用于交换数据的TCP连接,服务端与客户端通过此TCP连接进行实时通信。
websocket适用场景: 社交订阅,协同编辑,点击数据,实时更新实况,多媒体聊天。在线教育,实时推送。
websocket在用于双向传输、推送消息方面能够做到灵活、简便、高效,但在普通的request-response过程中并没有太大的勇武之地,比起普通的HTTP请求来反倒麻烦了许多,甚至更为低效。
2.生命周期不同
websocket 建立的是长连接,在一个会话中一直保持连接;
ajax是短连接,数据发送和接受完成后就会断开连接。
3.适用范围不同
websocket一般用于前后端实时数据交互
ajax前后端非实时数据交互
4.发起人不同
ajax技术需要客户端发起请求
websocket服务器和客户