模拟WebQQ实现简单的聊天,基于WebSocket
1. 什么是WebSocket
Html5提供的一种在单个TCP连接上进行全双工通讯协议。是基于TCP的,相对于传统HTTP协议的升级版(keep-Alive)。
----- “引用”
WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送
2.ajax轮询(程控输出入)
----- “引用”
定义:
轮询(Polling)是一种CPU决策如何提供周边设备服务的方式,又称“程控输出入”(Programmed I/O)。轮询法的概念是,由CPU定时发出询问,依序询问每一个周边设备是否需要其服务,有即给予服务,服务结束后再问下一个周边,接着不断周而复始。
在WEB上来说就是客户端一直向服务端发起请求,服务端返回数据,不论返回什么都会再次向服务端发送请求。
用法:
$(function() {
to_page();
setInterval("isHave();",3000);
});
function isHave(){
$.ajax({
url : "localhost/isHave",
data : {},
datatype: "json",
type : "post",
success : function(result) {
console.log(result);
},
}
});
}
优点:
1.解决了多次握手的问题。
2.服务器可以推送数据给客户端。
缺点:
效率低,当访问量大时,会对服务器造成压力。
3.WebSocket的优点
1.服务器和客户端任意在固定的时间内推送消息,在建立连接后,服务器可以主动传送给客户端。
2.不仅限于ajax方式通信,因为ajax需要客户端发起请求,而WebSocket服务器和客户端彼此相互推送信息。
4.WebSocket的使用
1.加入Spring+webSocket架包(4.1.5之后的版本)。
2.注册WebSocket处理器。
3.创建握手拦截器,重写beforeHandshake。
4.从WebSocket Session获取数据,在页面显示并保存到数据库。
5.js的使用。