WebRTC没有解决信号问题(即使我们确实以JSEP为起点),但据我所知,它的工作原理如下:
这一切都很好,但如果第三个客户到来会发生什么?
你必须重做一切。假设前两个客户端仍然连接到服务器,等待第三个客户端发出信号,然后再次启动交换过程,以便获得第三个客户端连接信息。
这是否意味着您需要为每个客户端(长轮询,websocket等)提供服务器的永久链接?如果是的话,有没有办法有效地做到这一点?
因为如果我必须设置nodejs或tornado并使其扩展到我的用户数量,我没有看到webRTC的重点。这对我来说听起来不太好。
请告诉我,我错过了什么。
答案 0 :(得分:2)
聊天系统怎么样?您是否真的需要为每个客户端保留与服务器的永久链接?当然,因为否则你无法跟踪用户的状态。这种“永久”链接可以通过不同的方式完成:您提到了WebSocket和长轮询,但简单的定期XHR轮询也可以工作(虽然这会影响UX,具体取决于间隔)。
因此,将其视为聊天系统,除了媒体流是P2P以减少延迟。一旦建立了P2P WebRTC连接,服务器就可能死亡,当然,P2P连接将保持在两个客户端之间。我的意思是:一旦P2P连接建立并且仍然在野外互联网中连接在一起,两个用户都可能总是阻止您的服务器。
理解我:一旦建立了P2P连接,您的服务器将不会再进行任何WebRTC信令。只需要连接以跟踪状态。
所以这取决于你的申请。如果你想保持用户的状态并让他们看到他们,那么你和聊天系统的情况相同:你需要保留一定的链接,以确保他们的状态是同步的。否则,您的服务器就可以将它们连接在一起,之后就不需要了。后一种情况的一个例子是:用户进入网页,网页为他提供新的房间URL,用户通过另一个方式将该URL共享给另一个对等方,另一个对等方加入房间,服务器将它们连接在一起(管理) WebRTC信令)然后忘记它们。它们现在已连接,直到其中一个断开链接。就像this reference app。
除了中央服务器为每个客户端保留一个连接外,还可以考虑使用网状网络,尽管很难实现。