React-native socket.io emit / на действия не запускается - PullRequest
0 голосов
/ 10 декабря 2018

Я работаю с реактивным приложением, которое использует socket.io.Я успешно установил socket.ion и импортировал его в свой компонент, например:

import React, { Component } from 'react';
import io from 'socket.io-client/dist/socket.io';
const connectionConfig = {
    jsonp: false,
    reconnection: true,
    reconnectionDelay: 100,
    reconnectionAttempts: 100000/// you need to explicitly tell it to use websockets
  };
  socket = io('http://192.168.1.100:3001', connectionConfig);
type Props = {};
export default class Socket extends Component<Props> {
    constructor(){
    super();
    socket.emit("Button",'pressed')
    socket.on('userid',(id)=>{
      this.setState({userid:{id}});
      Alert.alert(id);
    })
  }

И код для моей серверной стороны, использующий Express:

io.on('connection', function(socket){
  console.log(socket.id);
  socket.on('Button',function(data){
    console.log("ButtonPressed");
  });
 socket.emit('userid',socket.id);

}) Что странно,примерно через каждые 1.5 с консоль сервера регистрирует другой socket.id, когда я запускаю приложение на устройстве Android.Я полагаю, что socket.io успешно подключается, но снова отключается в упомянутом 1.5si, так что события socket.emit и socket.on не выполняются. Я перепробовал множество предоставленных опций, но не могу найти правильный способ исправить это.,Пожалуйста, если вы знаете обходной путь, я очень ценю.Спасибо.

1 Ответ

0 голосов
/ 10 декабря 2018

Я понял на андроиде, если вы используете опцию транспортов: ['websocket'] и находитесь в режиме разработки, затем сначала включите отладку удаленно, встряхнув телефон, и сокеты будут работать нормально для вас.Так что в принципе у вас должно быть что-то вроде

   import io from 'socket.io-client';
const connectionConfig = {
    jsonp: false,
    reconnection: true,
    reconnectionDelay: 100,
    reconnectionAttempts: 5000,
    transports: ['websocket']/// you need to explicitly tell it to use websockets
  };
  socket = io('http://192.168.1.100:3001', connectionConfig);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...