收藏
回答

tcpSocket在收到关闭帧后没有回调onclose()?

小程序在收到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。

回答关注问题邀请回答
收藏

1 个回答

  • 神经蛙
    神经蛙
    03-27

    具体逻辑就是,客户端向服务端发送quit,服务端收到quit后,会关闭socket,从wireshark抓包,可以看到服务端发送了FIN,但是客户端没有回复FIN。我客户端界面显示了报错,这是onError调用输出的结果。这个很容易复现的。让服务端主动断开连接。我想要的结果是服务端断开连接后,客户端收到FIN帧,回调onClose,我onClose监听函数中有是否socket逻辑,并且界面上会有响应,会禁用发送消息按钮。

    03-27
    有用
    回复
登录 后发表内容