【发布时间】:2020-04-26 03:52:10
【问题描述】:
我正在开发一个聊天应用程序,到目前为止,我每两秒轮询一次服务器以获取消息。为了让聊天更即时,我想实现长轮询。我正在尝试为此实现JS.info Guide,但我一直没有达到我打算达到的目标。谁能针对我的情况指出这一点?
我在 react 中有一个自定义的钩子,现在是基本的轮询。
仅供参考:我是初学者,现在不会使用 WS 或 Socket.io。在这一点上对我来说太多了。
提前致谢!
export default function useGetChatMessages(_id) {
const [chatMessages, setChatMessages] = React.useState([]);
React.useEffect(() => {
const interval = setInterval(() => {
getChatMessages(_id).then(fetchedChatMessages => {
setChatMessages(fetchedChatMessages);
});
}, 2000);
return () => clearInterval(interval);
}, [_id]);
return chatMessages;
}
这是我使用 express 的服务器功能。我想它应该在这里实现而不是在我的钩子中实现
router.get('/:id/messages', async (request, response) => {
try {
const chat = await Chat.findById(request.params.id);
response.json(chat.messages);
} catch (error) {
console.log(error);
response.status(500).json({ message: error.message });
}
});
【问题讨论】:
-
我个人认为 WS 或 Socket.IO 比通过幅度轮询更容易实现
标签: javascript reactjs polling long-polling