app能用webrtc吗(app中使用webrtc的可行性)

app能用webrtc吗?答案是肯定:可以,而且强烈建议你基于WebRTC。

WebRTC使web浏览器通过简单的JavaScript api接口实现实时通信功能,在这方面基本已成事实上标准。国内就有不少从事和WebRTC相关的开发者,像有的公司就基于WebRTC包做些修改、然后给其它开发者用、号称是视频聊天SDK。这样公司好多,但真正做大却有点难。我想有两个原因:Javascript的限制,浏览器的限制。

Javascript的限制

Javascript是脚本语言,能有什么功能取决于实现它的虚拟机,也就是浏览器这个应用程序。由于受限,问题来了,人民群众的需求总是琳琅满目,你都能提供吗?举个例子,直播过程中,要让对方的头上自动加顶红帽子,——当然,修改浏览器代码让加个帽子不是难事,可谁又知道接下会发生什么,难道要一个改一个?聊天往往是娱乐,娱乐经常是没啥规矩。由于这限制,开发者用它时会有这看法:东西是很好,但总是有那么点不足,而且即使是努力了也不可能解决(自个写浏览器除外)。

浏览器的限制

这就要涉及到聊天场景。很现实问题,如果我想和你聊天,身边有手机,你认为会用浏览器吗?对PC,网页比app方便,而移动设备却有点反着来,而且将来移动设备会越来越多。关于这个再深入个问题:如果PC用浏览器,手机用app,聊天是否可行?技术实现上没问题,可事实上基本不会做,代价太高划不来。

浏览器时,信令走的是Websocket,app用Websocket纯粹是没事找抽,直接C Socket既简单又高效。浏览器时,两socket间没啥心跳包机制,app时心跳包机制可很大提升效率。浏览器时,由于用Javascript开发,功能受限,app时用Native Code,自个想要什么就能实现什么。而且,WebRTC是跨平台包,基于C/C++的跨平台SDK也不是没有,何不在开发时顺便开发出个Windows平台app。以上导致了app不太可能和网页聊天,这又让浏览器少去很多应用场景。

综合来说,在浏览器不是WebRTC不行,而是其它原因导致有那么点尴尬。想做一个“完美”用户体验的聊天工具,终归还得用app。

为什么说对App是完全可行呢?浏览器在用的WebRTC其实分两层,底层是个用C++写的库(Native Code),然后上层写个Javascript封装,以便供HTML5调用。既然是写app,那完全不用管上层Js封装,而且Google在开发WebRTC时已考虑用在app,底层C++库的API已做得很完善了。也就是说,一旦直接用Native Code,完全和浏览器无关了,作为C/C++开发者,他就可以用WebRTC去实现自个想实现的所有东西。

对直播使用场景,很多人是用移动设备,移动设备基本都是用app。而WebRTC中的Native Code部分跨平台特性很好,基本不用改,就能写出完全跨iOS、Android、Windows平台的代码,所以有了iOS/Android app,基本不耗成本Windows上的app就出来了。——当然,如果有人在Windows还是坚持要用浏览器,那只能说在Windows不得不留有瑕疵。

为什么有人一想到Windows,直观就认为只有p2p?我猜是和默认的信令服务器是p2p有关。关于这默认的信令服务器是怎么个交互流程,如下图所示:

app能用webrtc吗(app中使用webrtc的可行性)
图片来源GitHub

根据这个图,你可以发现,只要换了信令服务器,就有可能变成直播。而事实也的确是这样。就像有人说直播时图像单向就够了(主播传向观众),而WebRTC是双向,只要改信令服务器,立刻就单向了。

为什么强烈建议你基于WebRTC?对直播系统,难的不是服务器,而是客户端。客户端难的地方则主要体现在两个方面,一是网络传输有关,像侦听事件,同步主线程和读线程,穿透;二是流数据有关,像编码、解码、回声消除。而这些正是WebRTC帮你解决了。也正因为如此,现在很多直播系统最早的客户端其实是以WebRTC为根的,只是后面自个不断优化,慢慢地变成自个系统而已。诚然,官方WebRTC是有地方不尽如意,但它们不断更新。

另外,app中使用webrtc有太多的例子了,比如这篇文章10 个使用 WebRTC 的直播APP(应用程序),不仅国外应用程序非常多,国内的也比比皆是。总之“app能用webrtc吗”之类的疑问,答案都是YES.

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(2)

相关推荐

发表回复

登录后才能评论