![\](http://www.ctiforum.com/uploadfile/2016/1017/20161017095808329.jpg)
关于使用什么样的语言,我们不好一下子解释明白,让我们看看这个图,从环境中学习吧。
![\](http://www.ctiforum.com/uploadfile/2016/1017/20161017100017155.jpg)
这里包括了服务器端的应用和客户端的应用。我们一个一个地聊。
看看web app 吧
Web app
这也是大部分用户想到的webrtc 应用,通过浏览器运行,当然包括了html和通常所说的。
![\](http://www.ctiforum.com/uploadfile/2016/1017/20161017100213712.jpg)
移动端 app
当涉及到移动端 app的话,这里有两种方式来实现webrtc。 一种就是我们刚才说的Java Script
最常见的方式是把webrtc嵌入在app的环境中,编译成一个SDK。SDK采用的语言包括?
- C, C++
- Java 支持安卓的环境开发
- Objective-C 或者 Switft 支持苹果的 iOS 开发
当然也有人使用 C#,通过Xamarin开发。
![\](http://www.ctiforum.com/uploadfile/2016/1017/20161017100343230.jpg)
Embedded app
嵌入式的设备是一个比较有意思的应用场景。很多情况下,可能因为很多原因,用户需要把WebRTC 嵌入到其他的设备中。两种常用的开发语言:
- C, C++ 如果用户经常看看 webrtc.org 的代码,你就会发现这些代码可以直接使用,方便!
- 其他语言可以支持 WebRTC 协议的,Go 浪 是否值得试试。
当然大部分环境下,C 语言是最合适的开发语言。
TURN server
![\](http://www.ctiforum.com/uploadfile/2016/1017/20161017100432370.jpg)
STUN 和 TURN 服务器端是必须的。大部分情况下,你不需要在这些服务器端做任何修改,当然也不会做重新编译。使用仅仅是使用它。这里无需其他开发语言介入。大部分开源项目最受欢迎的语言还是C 语言。木得选。
Media server
![\](http://www.ctiforum.com/uploadfile/2016/1017/20161017100851623.jpg)
媒体服务器有非常大的区别,我们目前大部分情况下讨论的是几个开源的webrtc 媒体服务器Jitsi/Kurento和后来的Kurento/Janus。 当然 kuento 被收购就不提了,伤心!
媒体服务器选择的语言根据平台的不同有所不同。Jitsi 是基于Java。Kurento 是基于C/C++,还有前端语言Java或者Node.js。Janus 大部分使用C 语言。
媒体服务器通过REST 接口或者Websocket来和终端进行通信,你可以使用任何你喜欢的语言来开发。当然目前最受欢迎的就是Node.js。
App/Signaling server
![\](http://www.ctiforum.com/uploadfile/2016/1017/20161017100922105.jpg)
信令服务器用来实现移动app, web app 或者嵌入式app的信令管理和通信。它负责TURN服务器的处理,管理用户密码,以便来控制媒体服务器。
答案还是非常简单,使用你自己喜欢的语言来开发,例如:
- Node.js
- Java
- PHP
- Erlang
- Ruby 和 Python
- Net
总之一句话,按照自己的喜好,使用什么语言方便就使用方便就使用什么语言。
当然最后看看PortSIP 的WebRTC 网关,肯定有惊喜!
![\](http://www.ctiforum.com/uploadfile/2016/1017/20161017101100673.jpg)