java - 处理断开连接的对等 WebSocket(Java) + STOMP + WebRTC
问题描述
目前,我必须参与一个与P2P消息呼叫应用程序相关的项目。所以通常在客户端,我使用 WebRTC 的 API。而在后端,除了让 2 个对等方相互交谈之外,我还需要处理呼叫每个阶段的逻辑,即向适当的客户端发送响应消息。我想使用WebSocket作为对等点的信令服务器,从开始到结束2个对等点之间的调用有很多阶段,例如:请求,运行,断开连接,挂断等......所以我仍然需要即使在信号过程之后打开 WebSocket 连接以检查断开连接,但是,我不太清楚当对等方与 WebSocket 断开连接时我能做什么,所以我仍然可以使用 WebSocket 通知其他对等方,
更简洁地说,如何检测对等点何时与 WebSocket 服务器断开连接?你能给我一个简单的例子吗?非常感谢!
解决方案
根据我的评论,您可以通过侦听 SessionDisconnectEvent 事件来检测用户何时断开连接。
@Component
public class STOMPDisconnectEventListener implements ApplicationListener<SessionDisconnectEvent> {
@Override
public void onApplicationEvent(SessionDisconnectEvent event) {
//event.getSessionId();
// event.getUser();
}
}
我猜你会跟踪你所有的 websocket 会话 ID。然后,您可以根据会话 id 或 getUser() 确定哪个用户的会话已断开连接。
您还可以收听SessionConnectEvent、SessionConnectedEvent、SessionSubscribeEvent和SessionUnsubscribeEvent事件。
推荐阅读
- python - XML 到字典提取
- python - DRF, "required": "此字段为必填项。"
- outlook - 无法在 POP/IMAP 服务器的 Outlook 中看到商店图标
- javascript - 接口和抽象类(JS)的区别
- javascript - 如何从html接收js函数中的值
- python - 尝试通过节点编辑器删除 RenderSetupLayer 节点时出现渲染设置错误
- ios - 如何使用 RxSwift 订阅 UIButton isSelected 更改?
- c# - 这件事的背景是什么?
- http - 以反向代理模式阻止通过http端口访问rocket.chat
- ruby-on-rails - 使用子条件分割来自 .each 方法的返回