我正在创建一个应用程序,它应该在我的nodejs服务器中触发一个更长的进程,而应用程序应该通过socket.io接收进度更新。
带有www.example.com的节点服务器socket.io工作正常,我已经在浏览器中使用Web客户端测试过它。但是,我无法在flutter应用程序中执行socket_io_client 1.0.2包的flutter代码。
这段代码位于一个方法中,当用户按下按钮时,该方法将被调用:
try {
print("step 1");
IO.Socket socket = IO.io('http://localhost:3000',
OptionBuilder().setTransports(['websocket']).build());
socket.on('connect', (_) {
print('connect: ${socket.id}');
socket.emit('process1', json.encode(_req));
});
socket.on('progress', (data) => print(data));
socket.onDisconnect((_) {
print('disconnect');
_finished = true;
});
} catch (e) {
print(e);
print("error");
}
print("step 2");
字符串
当单击按钮时,执行方法,但不执行套接字部分。在控制台中,我立即得到
step 1
step 2
型
但没有其他事情发生:控制台会立即记录测试语句,服务器不会注意到任何传入的连接…这是因为socket.io相关代码永远不会执行。没有错误,没有控制台消息,什么都没有!
有没有人知道为什么代码会这样,为什么什么都没发生?
Flutter(Channel stable,2.10.4)socket_io_client:^1.0.2
1条答案
按热度按时间gz5pxeao1#
我在使用相同版本的flutter和socket_io_client时遇到了同样的问题。
将sockit_io_client更改为
^2.0.0-beta.4-nullsafety.0
版本后,它可以正常工作。https://pub.dev/packages/socket_io_client/versions/2.0.0-beta.4-nullsafety.0
在他们的Github页面上有很多关于它的讨论。将在下一个版本中修复。