我已经连接了Laravel Echo。我使用Pusher和ReactJS并将到专用通道的连接设置为componentDidMount()
方法:
componentDidMount() {
let channelName = 'channel.12345';
let eventName = '.RoshamboResults.54321';
Echo.private(channelName)
.listen(eventName, data => {
console.log('Socket', data);
});
}
它可以工作,直到我转到另一条路线为止,因此该应用程序会卸载该组件。当我返回并等待通道中的其他消息时,我只能在Inspect-> Network-> WebSockets中看到它,而在控制台日志中却看不到它。所以JS停止听了。
答案 0 :(得分:0)
也许您应该在组件的componentWillUnmount
和componentDidMount
生命周期中放置一个控制台,再次执行这些步骤,并查看在路由时是否确实卸载了该组件,并在何时安装了该组件。你回来。
可能您的组件根本没有卸载,因此您的componentDidMount
可能只工作了一次。我认为这很可能是问题所在。
深入研究反应生命周期也可能对您的问题有所帮助,如果我上面说的是这种情况。我发现这是一篇有关生命周期的说明。 react文档也相当不错。希望这可以帮助。 :)
https://levelup.gitconnected.com/componentdidmakesense-react-lifecycle-explanation-393dcb19e459