野火IM应用之对讲机
随时技术的进步,很多通讯工具都走到了尽头,比如电报,比如BP机等,但其中有个古老的产品“对讲机”还在顽强地活着,在可以预见的很长时间内对讲机都会在某些特定的领域不可替代地存在。但对讲机的技术也在进步,已经有很多产品进化到基于IP的技术,通过IP技术可以跨过地理空间的限制。这里就讲一下如何利用野火IM开发一个“对讲机”。
野火IM是连接人与人、连接人与服务的通道。野火IM以SDK和Server API的方式提供给客户使用,具有非常大的灵活性,您可以充分发挥您天才的产品能力。
1. 1. 一个重要的技术背景
野火IM提供了可靠的消息服务,离线消息稳定可靠,这是野火的基础能力。但野火还提供了一个及时不离线的能力,这就是“透传”消息。顾名思义就是这个消息相当于直接透传给对端,服务不存储,如果对方在线就能收到消息,如果对方不在线消息就抛弃。这种消息比较适合某些特殊的场景,比如正在输入状态,又比如说音视频通话中某些指令,适合那些实时有用,但过后不需要的场景。而在对讲机的场景中也比较合适。实现这种“及时不离线”的消息非常简单,只需要自定义消息时指定消息的存储属性为”透传“即可。
2. 2. 最简单的对讲机
最简单的实现就是语音消息,自定义一个新的语音消息,透传类型。录音发送,群里在线的用户收到语音自动播放。做好一些简单的冲突处理就可以了,比如录音时来了语音消息不播放,等录音完成后播放;播放语音时不让录音,播放完按钮才可用;消息来了缓存起来一条一条排队播放。
3. 3. 升级版
最简单的对讲机最大的问题就是不实时,如果有人大段大段地讲体验不好,另外说话方互动有问题。可以想个办法做到准实时:首先有个抢麦的功能,有个服务介入来解决大家同时抢麦的冲突,保证某一时刻只有一个用户在说话,其次使用自定义透传语音消息,录制语音消息时,每300毫秒发送一条语音,这样语音消息就源源不断得发出来,延时在500毫秒以内,对于大部分场景都可以适用了。如果实时性要求比较高而网络又比较好,可以200毫秒甚至100毫秒发送一条语音消息。
4. 4. 终结版
使用消息的好处就是简单方便成本低,只需要一个IM服务就可以了。缺陷也是明显的,要先录音再发送,另外每条语音的发送都是可靠传输有多余的开销,遇到网络抖动就出问题。目前最好的方案就是使用webrtc的音视频技术了。需要一个MCU,每个加入群聊的用户都与MCU建立一个语音接收通道。抢到麦的用户与MCU建立起语音发送通道,语音经过MCU实时地发送到所有用户那里。这种技术跟野火IM没有任何关系了,野火IM的音视频无法提供这种服务,客户如果对各种指标需求特别高的话可以选择这个方向,我们只是给客户提个思路。
5. 其它
野火IM只做最基本的IM能力,不会做具体业务的开发,如果有人实现某些业务,我们可以帮助在我们github上附加链接和说明,让我们共同建立野火IM的生态圈。如果您有什么好想法,也欢迎给我联系。
野火IM