flutter - 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 内再次调用连接方法,但这会导致列表值重复,所以任何人都可以告诉我如何维护连接。
解决方案
推荐阅读
- javascript - 需要访问订阅功能里面的元素淘汰js
- python - 如何通过从另一行获取来填充数据框中的 Na 值
- html - 为什么它进入一个新的生产线而不是继续统一?
- android - 如何制作一个实心圆形进度条?(不使用外部库)
- python - 更改 Python 多处理管理器的衍生进程名称
- react-native - 如何将 setState 数组推送到数据?
- javascript - 将base64字符串转成png上传到前端的s3
- java - 同步块如何区分锁定对象
- powershell - 如何在不闪烁窗口的情况下运行批处理脚本?
- javascript - 渲染具有不同值的多个按钮组件的最佳方法是什么?