首页 > 解决方案 > 为什么 socket.io-client 在 React Native 中强制轮询

问题描述

我正在尝试将 socket.io-client 与本机反应一起使用,但我遇到了奇怪的行为。我正在使用 socket.io-client 版本 2.3.0 和 react native 版本 37.0.1,我的项目中也有 react-navigation 库。当我尝试将 socket.io-client 与我的 flask_socketio 服务器联机使用时,我的应用程序默认轮询作为主要传输,即使在启动连接时我添加传输:[“websocket”]。我的应用程序也无法像在我的本地服务器上一样工作。该应用程序出于某种原因是喜怒无常的。有时,如果我不断重新启动应用程序并且我让 websockets 以预期的行为工作(我正在来回发送消息,即即时消息传递),它会起作用。有任何想法吗?我用来连接的代码

UNSAFE_componentWillMount() {
    let socketio = io("wss://domain.com/namespace", {
      transports: ["websocket"],
      pingTimeout: 30000,
      jsonp: false,
    });
    this.setState({
      socket: socketio.connect(),
    });
  }

编辑:我也在黄色框中收到这些警告: 1. 长时间设置计时器,即多分钟,是 Android 上的性能和正确性问题,因为它使计时器模块保持清醒,并且计时器只能是当应用程序在前台时调用。2. 无法识别的 WebSocket 连接选项agent, perMessageDeflate, pfx, key, passphrase, cert, ca, ciphers, rejectUnauthorized. 你的意思是把这些放在下面headers吗?

标签: react-nativesocket.io

解决方案


推荐阅读