作者:Tshahi Levent-Levi(原文链接)
翻译:刘通
原标题:What's Your Preferred Language for WebRTC Development?
WebRTC不是只能用JavaScript写。
通常不会有人直接我这个问题,但是偶尔的时候也会被提起。特别是当有人想问一个语言适不适合WebRTC的时候。
上面那个问题的答案基本上都是肯定的,我认为需要做一个简单的解释来介绍一下各种编程语言都适合WebRTC中的哪些部分。
我们从这一个小小的图表开始,展示了哪些与WebRTC相关的实体,并且我们从此处着手开始讨论。
网页应用(Web app)
网页应用是大多数人提到WebRTC的时候一个想到的东西。
它在浏览器中运行,并且从HTML及其衍生工具加载。
而这意味着你最后要使用的语言就是JavaScript。
移动端应用(Mobile app)
当探讨移动端的时候,有两种使用WebRTC的方法。第一个方法是将Web应用移植到移动设备的浏览器中,这将会把你带回到JavaScript。
更为常见的方法是在应用程序中使用WebRTC。你需要编译并链接WebRTC代码库作为SDK。
所以可以用什么语言呢?
# WebRTC低层的内容由C, C++编写。你很有可能不需要处理这个问题(因为它很有可能会直接工作,或者你把它外包给别人来做)
# Java用来开发安卓原生应用
# Objective-C和/或Swift用来开发iOS原生应用
有了这些方法,应该已经有人为你将WebRTC封装入这些平台里了。
嵌入式应用(Embedded app)
事情在嵌入式中变的有趣了。
在一些用例中,你会想要你的嵌入式设备运行WebRTC。
这里有两个主要的方法决定选择的语言:
1. 如果你移植了webrtc.org的代码库并且想要使用它的话就要用C, C++。然后无论你喜欢什么都可以往上添加。
2. 在自行实现你所需要的WebRTC协议的时候,你可以使用任何你想用的语言。
一般来说,你需要降低抽象层次尽可能的接近机器语言。
TURN服务器(TURN server)
WebRTC通信业需要STUN和TURN服务器。最有可能的情况是—你除了编译,陪吃和运行STUN和TURN服务器以外你不需要做任何事情。
所以在此处不需要任何的编程语言。
虽然广受欢迎的开源选项都是用C语言写的,但是这没关系。
媒体服务器(Media server)
在这里编程语言取决于媒体服务器本身。Jitsi主要是基于Java的。Kurento是用C/C++写的,而其前端通常是用Java或者Node.js。Janus主要是用C写的。但是大多数情况下你都不需要在意这些。
媒体服务器通常是通过REST或WebSocket与你进行通信的实体,因此你可以在控制端使用任何你喜欢的编程语言。
应用/信令服务器(App/Signaling server)
有趣的是,这是问题主要针对的地方。应用程序和/或信令服务器的功能是将所有东西缝合在一起。它提供的Web应用程序,与移动和嵌入式应用进行通信。它提供了TURN服务器的细节并处理任何临时密码,它控制着媒体服务器。
这里的回答也很简单—你可以用你任何想用的语言。
# Node.js和JavaScript是很好很受欢迎的选择
# Java似乎是企业非常喜欢用的语言,虽然我不懂是为什么
# PHP很合适。它被许多WordPress插件用于WebRTC
# Erlang是那些喜欢冒险的开发者喜欢采用的语言
# Ruby和Python也是很好的选择
# .Net是我曾用用过一两次的
总的来说,任何你可以用来搭建网站的语言都可以用来做WebRTC服务。