构造函数中未定义的套接字

时间:2019-04-13 00:49:49

标签: react-native socket.io

这是react native应用中的代码,用于在构造函数中定义socket并在_onSend中调用它。

constructor(props) {
      super(props);
      this._onSend = this._onSend.bind(this);
      var socket = io(GLOBAL.BASE_URL, {
        transports: ['websocket'],
        jsonp: false
      });
      console.log("socket.io in chat constructor : ", socket.id);
      this.state = {
        messages: [],
        socket: socket
      };
    };

    _onSend(messages = []) {
      //fire up io connection

      this.state.socket.connect();
      this.state.socket.on('connect', () => {
          console.log("connected to socket server with socket.id : ", this.state.socket.id);
          this.state.socket.emit("message", {msg: messages.text});
      });
      this.setState(previousState => ({
        messages: GiftedChat.append(previousState.messages, messages),
      }))
    }

此操作的目的是在构造函数中定义一个套接字,并在用户停留在同一聊天页面上时使用相同的套接字。但是套接字是未定义的:

'socket.io in chat constructor : ', undefined

套接字定义在这里缺少什么?如果将所有与套接字相关的代码移出构造函数并移至_onSend中,则套接字可以正常工作。

0 个答案:

没有答案