实现一个类似微信、qq等即时通讯功能,即发送消息之后能马上收到消息通知。当然也可使用ajax轮询的办法去操作,但这种办法显然比较消耗性能,且无法判断服务端何时会发送消息,因而这里介绍websoket。(h5提供了websoket对象,所以实现起来很方便,代码如下:)
let ws = null;
function initWebsoket(){
ws = new WebSocket('ws://192.168.110:80');//这里将http替换成ws
switch (ws.readyState) {
case 0:
console.log("正在连接");
break;
case 1:
console.log("已经链接并且可以通讯");
break;
case 2:
console.log("连接正在关闭");
break;
case 3:
console.log("连接已关闭或者没有链接成功");
break;
};
ws.onopen = websocketsend;//websoket连接成功
ws.onmessage = websocketonmessage;//websoket收到信息
ws.onclose = websocketclose;//websoket连接关闭
};
function websocketsend(){
console.log('ws 连接成功');
};
function websocketonmessage(msg){
console.log('ws 收到了新消息');
console.log(msg);
};
function websocketclose(){
console.log('ws 连接关闭');
initWebsoket();//重新建立连接
};
initWebsoket();
注意:登录以后再建立soket连接,退出登录时要主动断开soket连接,调用ws.close()即可,否则会有问题。
复制代码
总结:由于websoket连接会在不做操作时自动断开,页面又无法检测,所以只能在断开时重新创建websoket连接。这样即可保持长连接。