您如何在WebRTC信令中有效地处理新来者?

您如何在WebRTC信令中有效地处理新来者?,webrtc,signaling,Webrtc,Signaling,WebRTC没有解决信令问题(即使我们有一个起点),但据我所知,它是这样工作的: 客户机告诉服务器它在X可用 服务器保存该信息并将其映射到标识符 另一个客户端过来并发送一个标识符以从第一个客户端获取连接信息 其他客户端使用它来创建它的一个连接信息并将其发送到服务器 服务器将此发送到第一个客户端 两个客户现在都可以交谈了 这一切都很好,但是如果第三个客户来了会发生什么呢 你必须重做整件事。假设前两个客户端仍然连接到服务器,等待第三个客户端发出信号,然后再次启动交换过程,以便获得第三个客户端连接信息

WebRTC没有解决信令问题(即使我们有一个起点),但据我所知,它是这样工作的:

  • 客户机告诉服务器它在X可用
  • 服务器保存该信息并将其映射到标识符
  • 另一个客户端过来并发送一个标识符以从第一个客户端获取连接信息
  • 其他客户端使用它来创建它的一个连接信息并将其发送到服务器
  • 服务器将此发送到第一个客户端
  • 两个客户现在都可以交谈了
  • 这一切都很好,但是如果第三个客户来了会发生什么呢

    你必须重做整件事。假设前两个客户端仍然连接到服务器,等待第三个客户端发出信号,然后再次启动交换过程,以便获得第三个客户端连接信息

    那么,这是否意味着您必须为每个客户机排序到服务器的永久链接(长轮询、websocket等)?如果是,有没有有效的方法

    因为如果我必须设置nodejs或tornado并使其扩展到我的用户数量,那么我看不到使用webRTC的意义。对我来说,这听起来不太有趣


    请告诉我我错过了什么。

    聊天系统怎么样?您真的需要为每个客户端保留到服务器的永久链接吗?当然,因为否则您无法跟踪用户的状态。这种“永久性”链接可以用不同的方式完成:您提到了WebSocket和长轮询,但简单的定期XHR轮询也可以工作(尽管这会影响UX,具体取决于时间间隔)

    因此,将其视为一个聊天系统,只是为了减少延迟,媒体流是P2P的。一旦建立P2P WebRTC连接,服务器可能会死亡,当然,P2P连接将保持在两个客户端之间。我的意思是:一旦建立了P2P连接,两个用户可能会一直阻止您的服务器,并且仍然在野生互联网中连接在一起

    请充分理解我:一旦建立了P2P连接,您的服务器将不再执行任何WebRTC信令。该连接仅用于跟踪状态

    因此,这取决于您的应用程序。如果你想保持用户的状态并让他们对其他人可见,那么你就和聊天系统一样:你需要保持某种链接,以确保他们的状态是同步的。否则,您的服务器就可以将它们连接在一起,以后就不需要了。后一种情况的一个例子是:用户访问一个网页,该网页向他提供一个新的房间URL,用户通过另一种方式将该URL共享给另一个对等方,另一个对等方加入房间,服务器将它们连接在一起(管理WebRTC信令),然后忘记它们。它们现在已连接,直到其中一个断开链接。就像


    与中央服务器为每个客户端保持一个连接不同,还可以考虑使用网状网络,尽管这很难实现。

    I+1但是webrtc的全部目的不是从一开始就避免使用服务器吗?现在,您需要一个STUN服务器,有时需要一个TURN服务器,以及一个所有客户端都始终保持连接的信令服务器,以确定是否有输入或输出。诚然,我们确实避免了托管bw使对等方之间的消息不通过服务器发送,但这仍然需要维护很多。当然是这样。这不是一项“简单”的技术。不过:现在和将来,两个对等点都有一个方法可以使用服务器进行初始信令连接,这很好
    RTCDataChannel
    也很有希望:一旦建立了连接,就可以通过P2P传输任何内容,而不仅仅是媒体流。顺便说一句,ICE使用STUN和TURN(如果您配置了与此类服务器的连接)来遍历NAT:如果您绝对确定用户不必遍历NAT,则不需要它们(但几乎总是这样)。