Socket.io客户端无法与React Native一起使用

时间:2019-03-31 18:10:41

标签: reactjs sockets react-native socket.io expo

我在后端中使用socket.io,它在前端上可以正常使用javascript使用socket.io-client进行工作,但是当我尝试通过React Native连接socket.io时,我得到了错误:

Vanilla JS(完美工作):

  
# delete all instances of whatever, if-and-only-if they aren't reachable from a gc root
nix-store --delete /nix/store/*-whatever

反应本机代码:(不起作用)

   <script>

    var socket =  io.connect('http://localhost:9092');
    socket.on('connect', function() {
      output('<span class="connect-msg">Client has connected to the server!</span>');
   });

错误:

  

websocket错误

     

堆栈跟踪:中的node_modules / engine.io-client / lib / transport.js:67:22   onError
  node_modules / engine.io-client / lib / transports / websocket.js:157:17在   onerror node_modules / event-target-shim / lib / event-target.js:172:43在   dispatchEvent
  node_modules / react-native / Libraries / WebSocket / WebSocket.js:290:10 in   
  node_modules / react-native / Libraries / vendor / emitter / EventEmitter.js:191:12   在发出
  node_modules / react-native / Libraries / BatchedBridge / MessageQueue.js:349:47   在__callFunction
中   node_modules / react-native / Libraries / BatchedBridge / MessageQueue.js:106:26   在
  node_modules / react-native / Libraries / BatchedBridge / MessageQueue.js:297:10   在__guard
中   node_modules / react-native / Libraries / BatchedBridge / MessageQueue.js:105:17   在callFunctionReturnFlushedQueue

我在后端使用https://github.com/mrniko/netty-socketio

已使用expo-cli创建了React Native应用。

3 个答案:

答案 0 :(得分:0)

代替使用localhost尝试获取IP 请记住,手机和PC的IP都应该相同,但是端口不同,这可能会解决您的错误

this.socket = io.connect('http://localhost:9092'}

this.socket = io.connect('http://192.x.x.x.x:9092'}

答案 1 :(得分:0)

我认为对于移动设备,您必须使用https才能使其正常工作。

答案 2 :(得分:0)

遇到类似问题,我使用的是 socket.io-client 版本 3

使用以下命令将您的版本降级到 2.1.1:

npm i socket.io-client@2.1.1

这应该开始工作