小程序在收到close帧后,close帧是通过wireshark查看的,小程序没有回调onclose,而是调用了onerror。
安卓客户端:8.0.48
t = wx.createTCPSocket()
t.onError(that.tErr)
t.onConnect(that.tConn)
t.onMessage(that.tMsg)
t.onClose(that.tClose)
t.connect({
address: ip,
port: port,
timeout: 3,
})
和注册顺序有关系吗?这是小程序的一个报错提示:
这里可以看到socket已经关闭,调用了onError,但是没有调用onClose。
具体逻辑就是,客户端向服务端发送quit,服务端收到quit后,会关闭socket,从wireshark抓包,可以看到服务端发送了FIN,但是客户端没有回复FIN。我客户端界面显示了报错,这是onError调用输出的结果。这个很容易复现的。让服务端主动断开连接。我想要的结果是服务端断开连接后,客户端收到FIN帧,回调onClose,我onClose监听函数中有是否socket逻辑,并且界面上会有响应,会禁用发送消息按钮。