3.3.2上我遇到这个问题,websocket会莫名其妙的断开连接,并且无法重新连上,只能kill进程后才能重新连上,而且这个是在特殊机型上才会有的···以前我误以为是11系统下都会,后来排查不是。
通过logcat查看,每当出现断网问题时就会一直疯狂输出Log->WebSocket.cpp: ERR: internal signal handler caught signal 11,(PS:不是输出的Error是Log输出的)
怀疑是跟CPU有关系或者是和内存泄露有关系,目前我采用了比较极端的方式直接拦截错误,并忽略掉。
在cpp文件中添加一个方法:
//信号处理函数
void recvSignal(int sig)
{
LOGD(“received signal do not deal %d !!!\n”, sig);
}
在连接成功的回调方法中添加拦截代码:
WebSocketImpl::onConnectionOpened()中添加signal(SIGSEGV, recvSignal);
这个只是能解决websocket不会掉线了,但是并没有处理掉引擎的错误,所以还需要引擎组好好去排查一下这个问题···
对了我这边测试的会出问题的机型有:红米K30s, 小米11,红米K40,oppo Renoz
然后我测试复现问题的方式就是快速的发送消息,很快不到1分钟就能在这几种机型上复现了。