轮询,让浏览器隔个几秒就发送一次异步数据传输(Http)请求,询问服务器是否有新信息,长轮询使得服务器开销增大。
Http是非持久协议,生命周期通过Request界定,即一个Request返回一个且只有一个Response,Response被动,不能主动发起。
类似AJAX,但当无消息时始终不返回Response给客户端,直到有消息才返回,返回完之后,客户端再次建立连接,周而复始。
持久化协议,有新数据时就主动推送给浏览器(Server Push)。
在实现连线过程中可以通过浏览器发出websocket连线请求,然后服务器发出回应,这个过程通常称为“握手”。在 WebSocket API,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。
在实现连线过程中可以通过浏览器发出websocket连线请求,然后服务器发出回应,这个过程通常称为“握手”。在 WebSocket API,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。
在websocket的世界中总共有4种事件:onopen、onclose、onmessage和onerror
onopen:websocket建立连接完成
onclose:websocket连接被关闭或无法建立连接
onmessage:websocket收到数据,发送数据对应socket.send方法
onerror:websocket发生错误
// 创建一个Socket实例
var socket = new WebSocket('ws://localhost:8080');
// 建立ws连接
socket.onopen = function(event) {
// 发送一个初始化消息
socket.send('I am the client and I\'m listening!');
// 监听ws消息
socket.onmessage = function(event) {
console.log('Client received a message',event);
};
// 关闭ws监听
socket.onclose = function(event) {
console.log('Client notified socket has closed',event);
};
// 关闭Socket....
socket.close()