dmc1989
@dmc1989

Почему нет подключения к websockets?

Сделал простой сервак, проверил connect и emit, все работает. Потом сделал попытку подключится и отправить сообщение через react-native, но в консоли сервера не написало ни подключения ни сообщения. На простой html странице я подключался так: var socket = io('http://localhost:3000/'); в react-native не сработало. Потом решил использовать подключение с использованием ws, но тоже не помогло. В чем проблема?
NODE
io.on('connection', function(socket){
  console.log('an user connected');

  socket.on('chat message', function(msg){
    console.log('message: ' + msg);
  });

  socket.on('disconnect', function(){
    console.log('user disconnected');
  });
});

http.listen(3000, function(){
  console.log('listening on *:3000');
});

HTML
<script type="text/javascript">
    document.addEventListener("DOMContentLoaded", ready);

    function ready() {
      var socket = io('http://localhost:3000/');

      setInterval(() => {
        socket.emit('chat message', "$('#m').val()");
      }, 3000);
    }
  </script>

REACT-NATIVE
import React, { Component } from "react";
import { View, Text } from "react-native";

export default class RemoteControl extends Component {
  constructor(props) {
    super(props);

    this.state = {
      open: false,
      connected: false
    };

    this.socket = new WebSocket('ws://10.0.2.2:3000/');
    this.socket.onopen = () => {
      this.setState({connected:true})
    };
  }

  emit = () => {
    if( this.state.connected ) {
      this.socket.send("chat message")
      this.setState(prevState => ({ open: !prevState.open }))
    }
  }

  componentDidMount() {
        this.socket.onopen = () => this.socket.send(JSON.stringify({type: 'chat message', payload: 'Hello Mr. Server!'}));
        this.socket.onmessage = ({data}) => console.log(data);
    }

  render() {
    return (
      <View>
        <Text>Remote control page</Text>
      </View>
    );
  }
}
  • Вопрос задан
  • 628 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы