Экспо с сокетом socket.io не удается подключиться - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь подключиться к серверу socket.io из приложения Expo.У меня проблемы с подключением к моему серверу.У меня есть веб-приложение, которое нормально подключается к серверу, поэтому сервер работает нормально.Я также посмотрел некоторые примеры, в том числе один из репо Экспо, но безрезультатно.

Мой клиент:

componentDidMount() {

    const socket = socketIOClient('http://192.168.1.210:80', {
      transports: ['websocket']
    });

    socket.on('connect', () => {
      console.log('Connected.');
    });

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

Сервер:

this.httpServer = HttpServer.createServer((req, res) => {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.end('');
});

this.httpServer.listen(80);

this.io = new IOServer({
  pingInterval: 10000,
  pingTimeout: 5000,
});

this.io.listen(this.httpServer);
this.io.set('transports', ['websocket']);

this.onConnection();

this.io.on('connection', (socket) => {/* events */}

Вкл.Событие connect никогда не сработает, только событие connect_error, которое просто говорит «timeout».При тестировании на https://www.websocket.org/echo.html.

собственные веб-сокеты работают нормально

1 Ответ

0 голосов
/ 17 января 2019

Это ошибка в socket.io, связанная с загрузкой в ​​неправильной реализации WebSocket.

Она искала self.WebSocket, но self не существует в React Native, поэтомувозвращался к require('ws'), реализации Node.js.В действительности, он должен был использовать собственную реализацию WebSocket в React Native.

Я сделал PR для решения этой проблемы: https://github.com/socketio/engine.io-client/pull/607

Причина, по которой включение удаленной отладкизаставляет его работать, поскольку в этом режиме код выполняется в браузере (Chrome), он может использовать реализацию браузера WebSocket.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...