首页 > 解决方案 > Flutter websocket在一段时间后关闭

问题描述

const CIM_HOST = "";
    const CIM_PORT = '34567';

    const CIM_URI = "wss://" + CIM_HOST;
    _channel = WebSocketChannel.connect(
      Uri.parse(CIM_URI),
    );
    _channel.sink.add(protobuff);

    _channel.stream.listen(
      //on message
      (event) {
        var list = event;
        var bytes = Uint8List.fromList(list);
        var type = bytes[0];
        var body = bytes.sublist(1, bytes.length);

        final message = js.context.callMethod('type2deserializeBinary', [body]);
        print(message.toString());
        if (message == null) {
          _channel.sink.close();
          timer.cancel();
          // Navigator.pushReplacement<void, void>(
          //   context,
          //   MaterialPageRoute<void>(
          //     builder: (BuildContext context) => LoginScreen(),
          //   ),
          // );
        } else {
          List<String> result = message.toString().split(',');
          if (currentid == result[3]) {
            int id = int.parse(result[3]);
            setMessage("reply", result[2], id, 'text');
            // print(result);
          }
        }
      },
      //on close
      onDone: () {
        
        debugPrint('ws channel closed');
        //reconnect to socket server
      },
      //on error
      onError: (error) {
        debugPrint('ws error $error');
      },
    );`enter code here`

我有这段代码可以连接到套接字并列出消息,但连接在一段时间后关闭。我试图在 ondone 内再次调用连接方法,但这会导致列表值重复,所以任何人都可以告诉我如何维护连接。

标签: flutterdartflutter-dependenciesflutter-web

解决方案


推荐阅读