情况是这样的,我自己本身写过一个Webscoket,然后单页情况下没问题,因为服务器有时候要跳整,容易断,所以弄了个重连机制,原理就是在onclose的情况下重新连接一下,后来发现如果多开一个页面,第二个页面就会不断的重连,搞不懂怎么回事,现在用了ReconnectingWebSocket这个小插件,也是这样的情况,代码如下:
function Webscoket() { //Scoket传输 var websocket = new ReconnectingWebSocket("ws://39.xxxxx/WeChatxxxScoket.php"); websocket.onopen = function(evt) {
console.log(ws.readyState);
}; websocket.onmessage = function(data){ var result = JSON.parse(data.data); switch(result.type) { //处理各类信息 case 'system': Scoket = result.Scoket; //Scoket唯一ID
if(getCookie("ChatId"))
{
var login_data = {
type: "login",
ChatId:getCookie("ChatId"),
Scoket: Scoket
};
}
else
{
var login_data = {
type: "login",
Scoket: Scoket
};
} ws.send(JSON.stringify(login_data));
console.log("websocket握手成功,发送登录数据:");
break;
case 'login':
AdminScoket = result.Admin;
Scoket = result.Scoket;
setCookie("ChatId",Scoket); $.ajax({
url:"WebchatAdmin.php?act=ajaxlist",
type:"POST",
data:{order_sn:Scoket},
success:function(res){ ListMessage(JSON.parse(res));
}
});
console.log(result);
break;
case 'message':
console.log(result);
AddMessage(result);
break;
}
}; websocket.onerror = function(error){ console.log(error);
}; websocket.onclose = function(evt) { console.log("closed");
}; return websocket;}我快疯了,求帮助,谢谢
function Webscoket() { //Scoket传输 var websocket = new ReconnectingWebSocket("ws://39.xxxxx/WeChatxxxScoket.php"); websocket.onopen = function(evt) {
console.log(ws.readyState);
}; websocket.onmessage = function(data){ var result = JSON.parse(data.data); switch(result.type) { //处理各类信息 case 'system': Scoket = result.Scoket; //Scoket唯一ID
if(getCookie("ChatId"))
{
var login_data = {
type: "login",
ChatId:getCookie("ChatId"),
Scoket: Scoket
};
}
else
{
var login_data = {
type: "login",
Scoket: Scoket
};
} ws.send(JSON.stringify(login_data));
console.log("websocket握手成功,发送登录数据:");
break;
case 'login':
AdminScoket = result.Admin;
Scoket = result.Scoket;
setCookie("ChatId",Scoket); $.ajax({
url:"WebchatAdmin.php?act=ajaxlist",
type:"POST",
data:{order_sn:Scoket},
success:function(res){ ListMessage(JSON.parse(res));
}
});
console.log(result);
break;
case 'message':
console.log(result);
AddMessage(result);
break;
}
}; websocket.onerror = function(error){ console.log(error);
}; websocket.onclose = function(evt) { console.log("closed");
}; return websocket;}我快疯了,求帮助,谢谢
解决方案 »
- 哥们帮忙分析一下代码,看一下错在那里?
- 用的网站的JS经过压缩(去空格去注释),用FireBugs怎么调试?
- div不同区域点击时弹出窗口的怪问题,高手请解答!
- 使用window.setTimeout()+ajax 定时无刷新 实现Web在线客服中的消息查询,不知是否可行??请教大家
- js如何绑定checklistbox?或者给checklistbox添加项?
- 如何检测内容中的图片
- 分隔符分隔字符串的代替方案
- xls中调用 window.showModalDialog方法报错
- 祝大家新年快乐~~同时问大家一个小问题,以前没有接触过网络的东西
- 求助 JS 在网页 节点后增加内容
- 用js怎么做小说网站那种排行榜?
- 移动端 rtmp流视频播放遇到问题,大神们帮忙看看!
我也遇到这样的问题了,这是我的解决方案,自己写了博客,希望可以帮到你。