如何在服务器端使用Node.js WebRTC判断对等端是否仍处于连接状态

3
我正在使用WebRTC制作语音、视频和聊天应用程序。在服务器端,我们如何检查对等方是否仍然连接。
实际上,我想要在进行语音/视频通话之前检查另一用户端是否仍然连接。我能够在用户登录或退出应用程序时维护在线/离线状态。
假设网络连接断开或丢失,我无法在服务器端获取任何信息。如果我能获取到,那么我就可以与其余已连接的对等方进行通信。
因此,需要帮助了解如何获取有关对等方是否仍处于连接状态的信息。我的应用程序中使用Nodejs和WebRTC。
2个回答

2

Socket.IO有一个“房间”概念,非常适用于构建WebRTC信令服务器,并且当用户断开连接时会触发disconnect事件。您还可以设置自定义事件,例如当用户停止视频流或离开页面时发出。

您可能想查看bitbucket.org/webrtc/codelab上的代码实验室,该实验室使用Socket.IO进行信令传递。(再次道歉,因为这是自我推销!)


1
嗨,Sam,对于你提到的上述内容,它对我来说运行良好。我也在使用房间概念。我在这里所说的问题是,假设Jeet想要连接Sam,而Sam在Jeet的联系人列表中显示为在线,因为Sam已经登录了他的机器。现在发生了什么,由于网络问题或者Sam所做的是从他的机器上拔掉网络电缆。然后,他就离线了,但在这种情况下,断开连接事件没有被触发,因此他仍然在Jeet的联系人列表中显示为在线。这是错误的。 - Jeet
明白了。我想你可能不得不使用轮询来实现这个功能。服务器应用程序可以期望每隔几秒钟从客户端收到一个“我还在这里!”的消息,如果没有收到,则会将客户端从房间中移除。 - Sam Dutton
是的,只是想知道服务器负载情况。什么时候会有大量用户同时使用这个应用程序? - Jeet
同意这种方法可能会导致服务器负载问题,而且它需要不断地从客户端发出网络请求。不确定如何在没有某种连续轮询的情况下持续检查客户端是否在线。 - Sam Dutton
3
Socket.io会自动完成这一切。有一个心跳概念,这将确保如果来自特定客户端的心跳未到达,则会自动触发“断开连接”事件。在此页面上搜索“heartbeat”。 https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO - Manu

1
你需要实现自己的逻辑来完成这个任务。
由于你已经注册了客户端的存在,你可以:
- 通过Websockets维护持久连接 - 在客户端和服务器之间实现轮询/保持活动算法。

好的。谢谢!是否有任何参考链接可以帮助我完成这个任务? - Jeet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接