我有一个ReactJS客户端通过Socket.io与NodeJS服务器连接 . NodeJs服务器将充当从Redis向客户端发送消息的中间件 .
ReactJS客户端将向NodeJS服务器发送它想要在Redis中订阅的订阅 Channels .
我能够将订阅 Channels 发送到服务器,并让服务器根据客户端订阅的 Channels 通过套接字发送Redis消息 .
但是,我无法在客户端收到该消息 . 因为有多个客户端,所以我设置套接字客户端来监听所选通道,如下所示:
componentDidMount() {
this.socket.on(this.state.channel, data => console.log(data));
}
用户在按钮点击时选择要订阅的 Channels 后设置 Channels 状态 .
handleChannelSelect = channel => e => {
this.socket.emit('Channel', channel);
this.setState({channel: channel})
};
默认状态是:
this.state = {
channel:""
}
this.socket = SocketIOClient("http://localhost:8080")
有没有办法在选择 Channels 后才能调用componentDidMount?或者,如何在选择 Channels 后更改客户端正在侦听的事件?