【发布时间】:2020-09-05 01:39:18
【问题描述】:
一段时间以来,我一直在尝试使用 socket.io 和 react,但我仍然不知道从哪里启动 socket = io(endpoint)。在我见过的大多数教程中,他们似乎将其置于组件级别(低于应用级别。我假设每当您切换路由和组件卸载时它都会断开连接)。但是,如果您想始终如一地收听某些事件,而不管您在应用程序中导航到哪条路线,该怎么办?这就是我的意思:
let socket
const App = () => {
useEffect(() => {
socket = io(endpoint)
socket.on('Application wide event', callback)
}, [])
}
然后你会通过 props 传递套接字吗?我已经尝试过这种方法,有时子组件希望在安装时立即发出事件,甚至在成功创建 App 套接字并因此引发错误之前。也许是这样的? :
/* socket initialization here */
const App = () => {}
什么是常规做法?
【问题讨论】:
标签: javascript reactjs websocket socket.io