- Creator 版本:2.4.7
- 目标平台:IOS / Android
在浏览器环境下,websocket的onclose方法中,可以获取到服务器主动断开连接时的code和reason,但在原生平台下(IOS / Android / 模拟器),这个值就成了undefined
在浏览器环境下,websocket的onclose方法中,可以获取到服务器主动断开连接时的code和reason,但在原生平台下(IOS / Android / 模拟器),这个值就成了undefined
看看2410的修改列表 估计对你有帮助
2410的修改列表看了下,是解决了调用close导致的崩溃
我这个问题是,在原生下,onclose的event,比web环境下少了很多参数…
好的,翻到原生层的实现看了一下,原生层直接没管closeCode和closeReason这两个东西,简单来说,服务器主动断开下发的code和reason,是不会传给js端的,客户端带着code和reason断开连接,实际上服务器也是收不到的。自己把ios的处理了一下,但是android端用的是libwebsockets,实在有点看不懂,不知道在哪里收到这两个东西
多谢大佬~先看看
onSocketCallback的参数列表中有个reason, 你试试看通过传递这个lws_callback_reasons给利用上?
试了下,当reason 是LWS_CALLBACK_WS_PEER_INITATED_CLOSE的时候,in里面会传递回来服务器下发的code和reason
感谢你富有价值的回复. 方便截个图看看in里面的值吗? 我们考虑之后对这块优化一下
好的,这两天太忙了,抽出空来截图一下~ 文字描述就是,前两个byte是固定的code,后面是reason
请问android有方法获取服务器下发的code和reason了吗?
楼主你好,我也遇到了相同的问题。在原生平台拿到的event的数据结构如下:
{
type: “close”,
target:{
“url”: “xxxxx:20102”,
“URL”: “xxxxxx:20102”,
“protocol”: “”,
“__jsb_ref_id”: 149,
“CLOSED”: 3,
“OPEN”: 1,
“CLOSING”: 2,
“CONNECTING”: 0,
“extensions”: “”,
“bufferedAmount”: 0,
“readyState”: 3}
}
请问你后面是怎么拿到对应的code和reason的
这个问题解决了么?24年了,我也遇到同样问题