socketio怎么断线重连?

如下代码,浏览器运行断网后自动回进入并重连,但是在模拟器以及发布后app运行都不执行,求解怎么解决断线重连的问题,谢谢大神!

window.remote.on('reconnect', function () {
            cc.log("重连成功》》》》》》》》》》》》》》》》》》》");
});

目前好像只能监听disconnect事件,自己做reconnect的操作。
SocketIO的实现需要重构。。。

1赞

哦 谢谢!确实是只能监听disconnect事件,那reconnect操作要怎么做哪?

延时一下,再connect一次呗。

嗯 这个我想到了,但是要想一直重连的话,怎么做哪?这个disconnect监听只执行一次,而且切换场景就会销毁当前this,刚才琢磨了好久没搞出来,求大神帮助,多谢!

而且还要再尝试重连一定次数失败后退回初始场景

我的做法是在帧刷新中检测websocket状态,如果有问题的话重新连接。

在update里写吗?常驻节点?怎么检测websocket的状态?

嗯,可以是常驻,也可以是每个场景放一个组件脚本,看需要,我的不是每个场景都需要长连接。

我没有用socketio,用的是原生的方法。

websocket对象.readyState;

1赞

嗯 我试试 多谢给了我思路:grin:

唉 我用的socketio 不知道怎么获取连接状态 蛋疼

巧了我也刚遇到这个问题, 看了下jsb代码应该是没绑定connected属性, 如果是lua binding我自己会弄, 这个jsb怎么加属性… 这个属性还是比较重要的,有空给指点下呗 @dumganhar

需要修改jsb_socketio.cpp文件。
绑定属性可以参考一下jsb_websocket.cpp里面JS_DefineProperty相关的代码。

是jsb_socketio.cpp?
我参照这个吗?

static JSPropertySpec properties[] =
{
JS_PSGS(“tag”, _js_get_SIOClient_tag, _js_set_SIOClient_tag, JSPROP_PERMANENT | JSPROP_ENUMERATE),
JS_PS_END
};

自己创建一个get_connect_status方法返回connect状态就可以? set可以留空?

你先试试
socketio之前是由一个外部开发者贡献的。
目前看需要重构下实现了。

想问一下我重新connect:window.io.connect(url);为什么还是连不上?我connect后尝试给服务器发送消息但是没有回应。
是不是服务器 那边 没有真正断开 重启线程,不太懂。第一次连接时候是可以进connect监听的,重连后没有再进了。

我写了个计时器在disconnect时候会一直重连,直到连接状态为true,但是我不知道如何获取这个连接状态,本以为重连成功后会进connect监听,在这里改变连接状态,可是不成功。

就差这一步了,求大大点拨下,多谢了

能稳定重现的话,提供一下复现的demo代码吧。

哦哦,websocket哪个状态不对劲啊?

请问问题怎么解决的 求分享