voip和rtc_为什么开发WebRTC与VoIP开发不一样?(上)

作者:Tsahi Levent-Levi(原文链接)

翻译:刘通

原标题:Why Developing With WebRTC is Different than VoIP Development?

让我从此处开始说起:

但是在最重要的几个方面上WebRTC与VoIP有着区别:

1. 企业用它来实现点子的方式上

2. 开发者用它来做应用的方式上

为什么呢?

因为WebRTC适合在两个非常不同的领域中应用,而且都是在互联网上运行:网页和VoIP。

而且这两个领域的相交部分并不大。除了他们都是在IP上运行的,但是他们并没有很多的相似之处。

如果你之前在VoIP方面进行过任何开发,那么你就会知道通话是如何连接的。你的工作主要是响铃以及那些组成第五类软交换机的那些特性。事实上,这些知识在你进行WebRTC开发的时候经常会成为你的绊脚石。

下面是WebRTC开发和VoIP开发之间的10个主要区别:

#1你不再有控制权

VoIP开发中,事情都很简单。所有解决方案都是你的。服务器,客户都是。当有什么东西不工作的时候,你只要过去,分析,修复相关的软件就可以了。

但是WebRTC不一样。你有的只有一个费心的东西,叫做“浏览器”。它们有4种。

并且它们会经常更新,经常发生改变。

下图展示了去年Chrome和Firefox的版本更新时间。

每个版本会持续6到8周。

这些版本更迭它们都有可能会改变那些会牵扯到WebRTC表现的东西。这些改变很有可能会导致你的服务出现一些不法预料的错误。

这些改变意味着:

1. 你对运行你服务的软件不具备完全的控制权

2. 你无法控制你的一部分部署进行更新(浏览器更不更新可不会听你的)

VoIP可不是这样。你进行开发,整合,部署,然后由你自己决定是什么时候更新或者进行改变。在开发WebRTC的时候就不行了。

你必须针对未来的浏览器版本不断的进行测试。你需要能够方便快捷的更新你的产品服务,而且要做好经常进行这套工作的准备。

#2 JavaScript是王道

我之前是一个VoIP开发人员。我之前进行过开发,项目管理,产品管理,然后还做了CTO,我们做的产品是在多种通信产品中使用的VoIP软件SDK。

说真的,我是一个很棒的开发人员。至少是在C语言编程上。VoIP就是用C/C++和Java进行开发的。

JavaScript呢,我只是了解,但是根本达不到一般开发者的地步。我猜很多VoIP工程师的背景都和我差不多。

WebRTC完全是JavaScript的天下。

是的。WebRTC有一个JavaScript API。但这并不是全部。很多为了使用WebRTC所写的后端系统到最后都会使用Node.js,而它用的是JavaScript。

WebRTC并不止仅限于JavaScript。有很多系统是用C,Java,Python,C#,Erlang,Dart,甚至PHP所写。也有.Net的系统。在移动端,原生软件在其客户端WebRTC SDK实现中使用的是Objective-C,Swift或者Java。

但是最主要的是JavaScript。

我认为用JavaScript的原因主要有三:

1. 潮流。Node.js十分新潮。WebRTC也是个新兴的技术,所以它们很般配。

2. 异步。WebRTC中的信令需要是交互式的。它需要有一个后端,以可以很好的适用于它的异步交互模型。Node.js提供了这个功能,而且可以同时在前端和后端进行信令更简化一点。这也带来了第三个,有可能是最重要的一个原因—

3. JavaScript。你在前端和后端都要使用JavaScript。对于开发人员来说,在两端都能使用同样一种语言会方便很多。如果需要的话,想要把代码的一部分从一端移到另一端也会变的更简单。

#3一个大岛

VoIP主要是关于互联互通性。如果你从一个供应商那里买了一个手机,那么你就“应该”可以给通过另一个供应商的PBX给第三个供应商的手机打电话。确实可以做到,至少是有时可以做到。而且需要在互通性下很大的功夫来进行测试和调试。一个很大的工程。

VoIP以及互通性对于岛的概念深恶痛绝。不同的通信服务之间无法进行连接。

WebRTC则不同。你不再需要为了与其他供应商的VoIP设备进行通信而搭建一个VoIP产品或者设备。你要搭建整个事情。

WebRTC也是一个岛,只不过非常大而已。在这个“岛”上,你可以通过所有浏览器,操作系统,以及移动设备来提供权限。

你不再需要考虑与其他提供商的互通性—只需要考虑你的设备与你所依赖的浏览器之间的互通性。在某种方面简化了事情。

#4云

看起来VoIP总是要在本地部署上运行。虽然有全球部署的例子,但是不是很多。通常需要考虑地理问题。

这可能是与VoIP的本质捆绑在一起的—因为VoIP就是你之前所用的电话网的替代品/电子版。这与现在世界比过去“更大”了也有关系—云这个概念在过去并不存在。

WebRTC有更大的挑战以及更多的要求。

对于绝大部分,以及大多数WebRTC部署,有三件事情是显而易见的:

1. 部署是全球性的。你永远都不知道用户会从哪里加入会话。

2. 网络是不可管理的。与上面一点很相似。你对于网络没有任何控制能力,但是你的用户还是会对通话质量产生抱怨。

3. 我们在AWS上部署他们、所有时间运行、在虚拟机上、在Docker容器中、一层层的抽取。对于实时服务来说,看起来是可行的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507033.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

量子计算机通用程序,量子计算机程序具有“通用性”?基于拓扑量子纠错码的量子计算机...

原标题:量子计算机程序具有“通用性”?基于拓扑量子纠错码的量子计算机不管量子计算机的内部是由什么组成,量子计算机的快速计算都可以归结为应用于量子比特的简单指令序列,即量子计算机内部的基本信息单位。无论这台计算机是由离…

php 加载redise_PHP Redis扩展无法加载的问题解决方法

最近在工作中需要使用PHP访问Redis,从https://github.com/phpredis/phpredis下载了phpredis,并且按照官方的说明进行了安装phpize./configure [--enable-redis-igbinary]make && make install但是在重启php-fpm的过程中,发生了如下的…

指纹机和计算机无法连接,考勤机怎么连接到电脑?考勤机连接电脑之后操作指南!...

考勤机,主要是用来将员工的出勤基本情况记录以及统计下来的机器。同时能够根据员工的工作上下班时间,详细地统计出加班时间、早退、迟到、旷工等出勤的情况。我们在统计具体的数据情况时候,就需要将考勤机与电脑进行联机,这样更加…

pentile 子像素_三星和索尼OLED子像素排列方式对比 有哪些差异?

目前已经有很多 VR 头戴设备在市面上进行发售,不同的厂家都因为价格定位的差异而选择不同的硬件解决方案。在其中最影响体验效果的自然是下面,我们就以三星和索尼 的 OLED 产品为例进行浅要分析。三星 OLED 对比索尼 OLED 到底哪个屏幕人们普遍认为分辨率…

计算机网络构成ppt,计算机网络体系结构ppt课件.ppt

文档介绍:船舶局域网技术及应用王宁轮机工程学院船电教研室HP:**********E-mail:n.wang.***2011年9月N.Wang09/2011*第3章计算机网络体系结构N.Wang09/2011*第3章计算机网络体系结构开放系统互连参考模型(OSI/RM)TCP/IP体系结构基本概念各层基本功能基本概念各层基本…

canvas转盘-拯救选择困难

转盘-拯救选择困难效果图简介代码效果图 简介 每到饭点就纠结吃什么,不如直接roll点。 在词条框中输入选项,选项用逗号(中英都可)隔开。点击设置词条,会根据词条(没有输入则获取代码中的默认词条&#xf…

tcping计算机端口,TCPing 服务器端口测试,端口阻断检测

介绍平时我们Ping服务器的IP,只是ICMP协议传输获得的延迟,而某些IDC会把ICMP的延迟优化的很棒,实际上一走TCPing 就暴露了;而且我们使用过程中主要是TCP协议传输数据,所以可以测试一下TCPing得到的延迟;另外因为TCP协议的握手步骤…

ue4中在物体上加ui_UE4 物体位置同步相关源码分析浅谈

前言多图, 不想在源代码写注释, 不想贴代码块, 看的不清楚版本4.21混4.22, 区别不大文章属于旧有文章搬运, 之前在csdn上面2019.10.27修改一版物体位置信息同步, 或者说物体的移动同步, 是一个很大的坑, 从个人目前魔改UE4位置同步后, 感觉至少要考虑以下几点位置信息的数据结构…

计算占比并保证百分比和为1

计算占比并保证百分比和为1常用场景代码常用场景 用于动态计算页面元素的百分比占比可视化中扇形统计图的显示数值修正 代码 /*** 计算数组中各项的占比,保证百分比和等于1* param arr 需要计算百分比的数组,传入时必须降序排序* param precision 精度 比如 4 …

tomcat配置自动服务器地址,修改eclipse部署tomcat时服务器部署地址

有时候我们在eclipse部署web项目至本地的tomcat但在webapps中找不到一、发现问题在eclipse中新建Dynamic Web Project,配置好本地的tomcat并写好代码后选择Run on Server,但运行后发现在tomcat的安装目录下的webapps并没有出现所建立的工程名字。二、验证很明显项目…

linux ns级定时器_linux用户空间获得ns纳秒级时间示例

一、引言我们在测试程序的性能的时候往往需要获得ns级的精确时间去衡量一个程序的性能,下面介绍下linux中用户空间获得ns级时间的方法二、用户空间获得ns级时间使用clock_gettime函数,函数原型如下:long sys_clock_gettime (clockid_t which_…

Prime算法生成迷宫

prime迷宫生成结果展示算法解析实现代码结果展示 算法解析 参考链接 Prime迷宫生成算法的原理: (1)初始地图所有位置均设为墙 (2)任意插入一个墙体进墙队列 (3)判断此时墙体是否可以设置为路(判断依据在于上下左右四个位置是否只有一个位置是路) (4)若设置为路&…

wifi密码公式计算机,求一些高数公式,做wifi密码用?

满意答案thyk72832018.06.08采纳率:55% 等级:13已帮助:8612人1)∫kdxkxc2)∫x^udx(x^(u1))/(u c3)∫1/xdxln|x|c4) ∫a^xdx(a^x)/lnac5)∫e^xdxe^xc6)∫sinxdx-cosxc7)∫cosxdxsinxc8)∫1/(cosx)^2dxtanxc9)∫1/(sinx)^2dx-cotxc10)∫1/√…

canvas简单五子棋

canvas简单五子棋效果思路代码效果 思路 canvans 绘制棋盘&#xff0c;绘制时候边缘预留棋子位置监听点击事件绘制落子并记录到字典中获胜判定&#xff0c;在四个方向上检测是否有足够数量的连贯棋子 代码 <!DOCTYPE html> <html lang"en"> <head…

unet作为服务器不显示画面,UNet:无法生成服务器对象(不使用NetworkManager)

我m playing around with Unity 5的网络HLAPI . I dont want to use the NetworkManager &#xff0c;因为我没有t want to pay for Unity的多人游戏服务(Matchmaker和Relay服务器) .当客户端连接到服务器时&#xff0c;我正在尝试在客户端上生成播放器 . 我可以让客户端正确连…

viewBox视图缩放(1)

文章目录前言一、案例解析前言 svg 的viewBox 可以重新定义视口的显示范围&#xff0c;通常表现为平移&#xff0c;缩放内容&#xff0c;之前测试的一直是viewBox 和viewPort 之间的等比缩放&#xff0c;后来发现不等比情况与认知有些出入&#xff0c;如下 <svg width&quo…

sklearn svm如何选择核函数_文本挖掘篇|利用SVM进行短文本分类

何为数据挖掘&#xff0c;顾名思义就是从大量数据中挖掘或抽取出知识。在实际中&#xff0c;进行数据挖掘的数据不仅仅有数值型数据&#xff0c;还有图片型数据&#xff0c;文本型数据等。而所谓文本挖掘&#xff0c;就是从大量文本数据中&#xff0c;提取出对信息使用者有价值…

svg 折线添加新的折点

问题 现有已知折线 有多段&#xff0c;当双击折线的时候&#xff0c;需要将该双击的位置点Q 添加到折线上&#xff08;排除端点情况&#xff09;&#xff0c;如何去判断Q要添加在折线的哪一段&#xff0c;或者Q分割了折线的哪一段&#xff1f;&#xff1f; 分析 方式1 一开始…

微信企业号已停止提供企业消息会话服务器,企业微信注册时显示会话服务已经被安装了怎么解决 解决攻略教程大全...

2016年4月18日&#xff0c;腾讯正式发布全平台企业办公工具“企业微信”&#xff0c;并通过腾讯应用宝独家首发安卓版。“企业微信”的推出将为企业员工提供最基础和最实用的办公服务&#xff0c;并加入贴合办公场景的特色功能、轻OA工具&#xff0c;合理化区分工作与生活&…

hashmap 扩容是元素还是数组_曹工说JDK源码(1)--ConcurrentHashMap,扩容前大家同在一个哈希桶,为啥扩容后,你去新数组的高位,我只能去低位?...

如何计算&#xff0c;一对key/value应该放在哪个哈希桶大家都知道&#xff0c;hashmap底层是数组链表(不讨论红黑树的情况)&#xff0c;其中&#xff0c;这个数组&#xff0c;我们一般叫做哈希桶&#xff0c;大家如果去看jdk的源码&#xff0c;会发现里面有一些变量&#xff0c…