这是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
中,则套接字可以正常工作。