Клиент Socket.io не работает с React Native - PullRequest
0 голосов
/ 31 марта 2019

Я использую socket.io в бэкэнде, он отлично работает на внешнем интерфейсе с ванильным javascript с помощью socket.io-client, но когда я пытаюсь подключить socket.io через React Native, я получаю сообщение об ошибке:

Vanilla JS (отлично работает):

   <script>

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

Реагирующий родной код: (Не работает)

 this.socket = io.connect('http://localhost:9092',{ 
 reconnection: true,
 reconnectionDelay: 500,
 jsonp: false,
 reconnectionAttempts: Infinity,
 transports: ['websocket']});

this.socket.on('connect',function(e){
  console.log("on Connect");
})

this.socket.on('connect_error', (err) => {
  console.log(err)
});

Ошибка:

Ошибка веб-сокета

Трассировка стека: 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 в
node_modules / Reaction-native / Библиотеки / vendor / emitter / EventEmitter.js: 191: 12 в emit
node_modules / реагировать-родной /Библиотеки / BatchedBridge / MessageQueue.js: 349: 47 в __callFunction
node_modules / реагировать-нативный / Библиотеки / BatchedBridge / MessageQueue.js: 106:26 в
node_modules / реагировать-нативный / Библиотеки / BatchedBridge / MessageQueue.js: 297: 10 в __guard
node_modules / реагировать-нативный / Библиотеки / BatchedBridge / MessageQueue.js: 105: 17 в callFunctionReturnFlushedQueue

Я использую https://github.com/mrniko/netty-socketio в серверной части.

Приложение React Native было создано с использованием expo-cli .

1 Ответ

0 голосов
/ 04 июля 2019

Вместо использования localhost попробуйте получить IP-адрес, помните, что IP-адрес на обеих сторонах телефона и ПК должен быть одинаковым, но с разными портами, и это, вероятно, решит вашу ошибку

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

до

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

...