为什么socket.io-client在React-Native中强制轮询

为什么socket.io-client在React-Native中强制轮询,react-native,socket.io,React Native,Socket.io,我正在尝试将socket.io-client与react-native一起使用,我的行为很奇怪。我正在使用socket.io-client版本2.3.0和react本机版本37.0.1,我的项目中还有react导航库。当我尝试将socket.io-client与flask_socketio server online一起使用时,我的应用程序默认将轮询作为主要传输,即使在启动连接时,我添加了传输:[“websocket”]。我的应用程序也不能像在本地服务器上一样工作。由于某种原因,这个应用程序是喜

我正在尝试将socket.io-client与react-native一起使用,我的行为很奇怪。我正在使用socket.io-client版本2.3.0和react本机版本37.0.1,我的项目中还有react导航库。当我尝试将socket.io-client与flask_socketio server online一起使用时,我的应用程序默认将轮询作为主要传输,即使在启动连接时,我添加了传输:[“websocket”]。我的应用程序也不能像在本地服务器上一样工作。由于某种原因,这个应用程序是喜怒无常的。有时,如果我持续重启应用程序,让WebSocket以预期的行为工作(我来回发送消息,即即时消息),它就会工作。有什么想法吗? 我用来连接的代码

UNSAFE_componentWillMount() {
    let socketio = io("wss://domain.com/namespace", {
      transports: ["websocket"],
      pingTimeout: 30000,
      jsonp: false,
    });
    this.setState({
      socket: socketio.connect(),
    });
  }
编辑: 我还收到了黄色方框中的警告: 1.在Android上,设置一个长时间的计时器(即多分钟)是一个性能和正确性问题,因为它会使计时器模块处于唤醒状态,并且计时器只能在应用程序位于前台时调用。
2.无法识别的WebSocket连接选项
代理
perMessageDeflate
pfx
密钥
密码短语
证书
密码
拒绝未经授权的
。你是想把这些放在
标题下吗?

我也有类似的问题。您可以添加
socketio.on('connect',()=>console.log('connected:',socketio.id))并查看是否有连接的日志?我明白了,但在任何事件之后都没有。经过一点测试,我意识到flask_socketio是我的服务器,由gunicorn运行,由nginx代理,不能在gunicorn的多个进程上运行。这就好像客户端都连接到我服务器上的不同进程,这些进程都充当同一房间的不同实例,因为这些进程无法相互通信。我将gunicorn设置为1个工作进程,这就解决了我目前的问题。我遇到了类似的问题。您可以添加
socketio.on('connect',()=>console.log('connected:',socketio.id))并查看是否有连接的日志?我明白了,但在任何事件之后都没有。经过一点测试,我意识到flask_socketio是我的服务器,由gunicorn运行,由nginx代理,不能在gunicorn的多个进程上运行。这就好像客户端都连接到我服务器上的不同进程,这些进程都充当同一房间的不同实例,因为这些进程无法相互通信。我将gunicorn设置为1个工作进程,这暂时解决了我的问题。