场景重现:
websocket 应用到手机网页中的时候,如果关闭手机屏幕网络就会断开,导致用户无法发送信息和接受信息。可以通过io进行重连,但是发送信息成功,无法接受信息。无奈ing。
解决方法:
relogin: function(){
this.socket = io.connect('http://182.254.149.230:8080',{ <span style="color:#ff0000;">forceNew: true </span>});
this.socket.emit('login', {userid:id});
<span style="color:#ff0000;">this.init(1);</span>
},
init : function(re){
if(!re)
this.socket = io.connect('http://182.254.149.230:8080');
/*websocket 的一些监听操作*/
}
window.onload = init();
注意两点:
1、relogin 方法中io.connect后面需要加上参数forceNew,否则无法重连。
2、重连成功之后,需要重新init一下,在init之间所用的websocket依旧为第一次连接时候的websocket,无法继续监听事件。重新init之后,websocket为强制连接之后的websocket。