Firefox webRTC会话描述中的“ sdparta”代表什么?

BEV*_*337 5 firefox p2p mozilla peer webrtc

当期间的WebRTC的Firefox信号生成报价,答案对象,Mozilla的增加了约一语双关小号分裂国家d ESCRIPTION P通过返回说答案,并提供rotocols“THIS_IS_SDPARTA。”

除了有趣之外,“ SDParta”的“ arta”部分还有什么意义吗?


以下是两个SDP。其中一个是在Chrome中制作的,另一个是在Firefox中制作的,每个都使用相同的Web应用,STUN服务器和信令服务器。

Chrome生成的webRTC答案对象:

"answer": {
    "type": "answer",
    "sdp": "v=0\r\no=-```numbers omitted``` 2 IN IP4 123.4.5.6\r\ns=-\r\nt=0 0\r\na=group:BUNDLE data\r\na=msid-semantic: WMS\r\nm=application 9 DTLS/SCTP 5000\r\nc=IN IP4 0.0.0.0\r\nb=AS:30\r\na=ice-ufrag:CYLs\r\na=ice-pwd:```pwd omitted```\r\na=ice-options:trickle\r\na=fingerprint:sha-256 ```sha-256 omitted```\r\na=setup:active\r\na=mid:data\r\na=sctpmap:5000 webrtc-datachannel 1024\r\n"
}
Run Code Online (Sandbox Code Playgroud)

Firefox生成的webRTC答案对象:

"answer": {
    "type": "answer",
    "sdp": "v=0\r\no=mozilla...THIS_IS_SDPARTA-61.0.2```numbers omitted``` 0 IN IP4 0.0.0.0\r\ns=-\r\nt=0 0\r\na=fingerprint:sha-256 ```sha-256 omitted``` \r\na=group:BUNDLE sdparta_0\r\na=ice-options:trickle\r\na=msid-semantic:WMS *\r\nm=application 9 DTLS/SCTP 5000\r\nc=IN IP4 0.0.0.0\r\na=sendrecv\r\na=ice-pwd:```pwd omitted```\r\na=ice-ufrag:8e051271\r\na=mid:sdparta_0\r\na=sctpmap:5000 webrtc-datachannel 256\r\na=setup:active\r\na=max-message-size:1073741823\r\n"
}
Run Code Online (Sandbox Code Playgroud)

“ THIS_IS_SDPARTA”指的是电影300和后续的模因,这是斯巴达

根据概述会话描述协议的RFC 4566,原始值由SDP字符串中的'o = value ' 分配:

o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>
Run Code Online (Sandbox Code Playgroud)

我假设根据协议,'THIS_IS_SDPARTA被视为会话ID的非正式前缀。

我找不到“ ARTA”作为与SDP或webRTC有任何关系的首字母缩写词。简而言之,“阿尔塔”可以是一个人的名字,也可以是希腊,吉布提或阿尔巴尼亚的名字。除了希腊语之外,我都找不到古代斯巴达和阿尔塔之间的任何关联。维基百科在“ Arta”上的歧义消除页面。

在堆栈溢出中搜索“ this_is_sdparta”或“ sdparta”会返回用户对其SDP和信号进行故障排除的代码段,没有人在标题中询问sdparta,因此搜索“ sdparta”,也没有直接讨论“ sdparta”或“我可以找到的this_is_sdparta”。

我发现了两个开发人员专门讨论“ this_is_sdparta”的示例。一个是来自IñakiBaz Castillo 的推文,没有技术说明:

Firefox Nightly #WebRTC中的幽默感:

v = 0 o = mozilla ... THIS_IS_SDPARTA-37.0a1 44108 0 IN IP4 0.0.0.0 a = group:BUNDLE sdparta_0 sdparta_1

一篇文章,我很难找到作者的名字,而谁只是在享受幽默。这是屏幕截图: 这是SDPARTA

注意:这是我删除的问题的转发,因为它包含个人网络连接详细信息。对困惑感到抱歉。

除了有趣之外,“ SDParta”的“ arta”部分还有什么意义吗?

小智 10

早在2014年,五名Mozilla开发人员(包括我自己)就将他们自己锁定在AirBnB中一周,以向Firefox添加多流支持。在星期一晚上,我们得出结论,使用当前的代码库是不可能实现这一目标的,当时的代码库包含了来自思科的完整SIP堆栈。在星期二早上,我们开始删除所有我们不想再使用的代码,并开始使用从头开始编写的代码替换它们,但这些代码适合WebRTC的更高级用例。

您可以想象,到本周结束时,我们所有人都对奥秘的会话描述协议感到厌倦。因此,当亚当(Adam)打开错误时,拜伦(Byron)开始研究SDP语法以及允许我们输入Firefox版本号的位置。那时我们意识到这将是增加乐趣的理想之地。

TL; DR:这只是典型的复活节彩蛋,开发人员希望在其中找到一些乐趣。而已。

  • @baptx 我不同意。说实话,整天阅读 rfc 可能会带来压力。如果没有让你快乐的小事,我们怎么能保持生活的平衡呢? (3认同)
  • 复活节彩蛋固然不错,但在协议中使用它并不严肃。例如,我想了解为什么 WebRTC 连接在一分钟后失败,并被要求检查 about:webrtc 并看到 THIS_IS_SDPARTA。当我们试图找出失败的原因时,看到这样的笑话是很奇怪的。 (2认同)

小智 10

为了扩大尼尔斯的回答,我不记得这是我们五个人中谁的想法,但我认为可能是马丁。它出现在代码中的第一个地方是这里的重写代码一些ASCII艺术。

我们知道这种重写是极端且冒险的,但是我们对代码当前状态的耐心终于消失了,房间里的心情让人联想到Leeroy Jenkins。因此,一些愚蠢的幽默潜入了代码中。


Len*_*ahl 6

有趣的调查。用户代理已添加用于调试目的,可以从相关的错误推断:

Adam Roach:如果我们在 SDP 中报告当前的 Firefox 版本,这将有助于调试。

然后 Byron Campen 添加了一个带有用户代理和行的变更集mozilla...THIS_IS_SDPARTA-<user-agent>。所以,肯定没有更多的东西了。