为什么socket.io-client在React-Native中强制轮询
我正在尝试将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以预期的行为工作(我来回发送消息,即即时消息),它就会工作。有什么想法吗? 我用来连接的代码为什么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”]。我的应用程序也不能像在本地服务器上一样工作。由于某种原因,这个应用程序是喜
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个工作进程,这暂时解决了我的问题。