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服务器和客户端可以相互推送信息

5.用法不同

ajax:

$.ajax(
{
	type:'post',
	url:'http://www.baidu.com',
	data:{"state":"yes"},
	dataType:"json",
	success:function(){
	}
}
);

websocket

namespace = '/test';
var socket = io.connect(location.protocol + '//' + document.domain + ':' + location.port + namespace);
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐