在反应中切换聊天时如何订阅新的websocket会话
Posted
技术标签:
【中文标题】在反应中切换聊天时如何订阅新的websocket会话【英文标题】:How to subscribe to a new websocket session when switching chats in react 【发布时间】:2019-10-25 13:24:57 【问题描述】:我正在开发一个实时聊天功能,用户可以加入许多不同的聊天室。切换房间后,我很难订阅新的聊天室。它正在将消息发送到正确的会话,但由于没有重新订阅新会话,因此没有接收到消息。
useEffect(() =>
client.configure(
brokerURL: 'ws://localhost:8080/ws',
connectHeaders: sh,
onConnect: () =>
console.log('onConnect');
setIsConnected(true);
client.subscribe(`/secure/room/$convoId`, mes =>
const json = JSON.parse(mes.body);
setMessages(prev => prev.concat(json));
);
,
onDisconnect: () =>
console.log('disconnected');
setIsConnected(false);
,
onWebSocketClose: () =>
client.unsubscribe();
);
client.activate();
, [messages, convoId]);
一旦用户切换到新的聊天室,重新订阅会话
【问题讨论】:
【参考方案1】:尝试在重新配置之前先关闭连接。
喜欢client.disconnect();
【讨论】:
谢谢!那行得通,我设置了一个监听器来检查位置何时发生变化并强制断开连接。以上是关于在反应中切换聊天时如何订阅新的websocket会话的主要内容,如果未能解决你的问题,请参考以下文章
websocket聊天时,图片压缩处理(url或者input-file)
Webflux,使用Websocket如何防止订阅两次反应式redis消息操作