Websocket socket.io-客户端在react native中使用时保持连接

Websocket socket.io-客户端在react native中使用时保持连接,websocket,socket.io,react-native,Websocket,Socket.io,React Native,我想在我的RN项目中使用websocket。我使用服务器端的ws和RN内置websocket实现来实现。 但由于我以前使用过socket.io,所以它似乎不太方便。 所以我尝试使用socket.io: 在RN中: 在组件中: componentDidMount() { this.socket = io('https://localhost:4080',{jsonp: false}); this.socket.on('hello', (msg) =>{

我想在我的RN项目中使用websocket。我使用服务器端的ws和RN内置websocket实现来实现。 但由于我以前使用过socket.io,所以它似乎不太方便。 所以我尝试使用socket.io: 在RN中:

在组件中:

    componentDidMount() {
     this.socket = io('https://localhost:4080',{jsonp: false});
     this.socket.on('hello', (msg) =>{
       this.setState({response:msg})

     });
    }
在服务器中:

  io.on('connection', function(socket){
   socket.emit('hello','hello world')
   console.log('a user connected');
   socket.on('disconnect',function(){
     console.log('user disconnected')
   })
  })
在userAgent.js中

window.navigator.userAgent = 'react-native';
这正是我在谷歌上搜索的结果,他们说这会奏效。但对我来说,chrome调试器停在:

function load() {
 var r;
 try {
  r = exports.storage.debug;
 } catch(e) {}
 return r;
}
它还说存储没有定义。 然后我查看了socket.io.js,发现exports.storage是window.localStorage。所以我禁用了远程js调试,代码开始运行

但服务器继续记录:一个用户已连接。好像我的RN应用程序一直在连接到服务器。似乎socket.on()在客户端不起作用

react本机版本:0.27.2

socket.io客户端版本:1.4.8


有人知道哪里出了问题吗?

好吧,在查看socket.io源代码后,我终于找到了解决方案。 似乎socket.io默认不使用“websocket”作为传输。在我的情况下,它将使用“轮询”,因此只需明确设置它:

 componentDidMount() {
    var socket = io('http://localhost:4080', { jsonp: false, transports: ['websocket'] })
    socket.on('hello', (msg) => {
       //do something
    });
}
现在它起作用了。
但仍然让我困惑的是,在brower客户端中,我没有设置传输,它只是工作得很好,但在react native中却没有。不知道为什么。

好吧,我在查看socket.io源代码后终于找到了解决方案。 似乎socket.io默认不使用“websocket”作为传输。在我的情况下,它将使用“轮询”,因此只需明确设置它:

 componentDidMount() {
    var socket = io('http://localhost:4080', { jsonp: false, transports: ['websocket'] })
    socket.on('hello', (msg) => {
       //do something
    });
}
现在它起作用了。
但仍然让我困惑的是,在brower客户端中,我没有设置传输,它只是工作得很好,但在react native中却没有。不知道为什么。

嗨,你让它与react客户端一起工作了吗?你能分享你使用它的地方吗?我正面临一些麻烦嗨,你和客户合作了吗?你能分享你使用它的地方吗?我正面临一些麻烦