Flutter Socket io 在几秒后断开连接。

4

我正在使用Express编写本地套接字服务器,并通过ngrok将其暴露到互联网上。以下是服务器代码:

const app = require('express')();
const http = require('http').createServer(app);

app.get('/', (req, res) => {
   res.send("Node Server is running. Yay!!");
});

//Socket Logic
const socketio = require('socket.io')(http)
socketio.on("connection", (userSocket) => {
   console.log('Connected to socket');
});

http.listen(3000, () => {
 console.log('listening on port 3000');
});

我的连接逻辑是:

 void connectToServer() {
    try {
      socket = io('https://fa6387728fcd.ngrok.io', <String, dynamic>{
        'transports': ['websocket'],
        'autoConnect': false,
      });

      // Connect to websocket
      socket.connect();

      // Handle socket events
      socket.on('connect', (data) => print('Connected to socket server'));
      socket.on('disconnect', (reason) => print('disconnected $reason'));
      socket.on('error', (err) => print('Error: $err'));
    } catch (e) {
      print(e.toString());
    }
  }

但是我一直收到 disconnected ping timeout 的错误信息,有时候也会出现 disconnected transport close 的提示。

2个回答

1
我有同样的问题。 这个问题并不是由socket_io_client包引起的。
当我在服务器端更新socket.io时,问题得到解决。 只需在您的node.js服务器上运行npm install socket.io@latest命令即可。

0
根据socket_io_client的官方文档,如果您正在使用https服务器,请使用此解决方法:
class MyHttpOverrides extends HttpOverrides {
  @override
  HttpClient createHttpClient(SecurityContext context) {
    return super.createHttpClient(context)
      ..badCertificateCallback =
          (X509Certificate cert, String host, int port) => true;
  }
}

void main() {
  HttpOverrides.global = new MyHttpOverrides();
  runApp(MaterialApp(
  ...
  ));
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接