前言:tim是去中心化分布式即时通讯引擎。不依赖于任何中心服务器,采用去中心化分布式架构,解决传统中心化通讯方式的问题,去中心化分布式架构的通讯引擎的各个节点之间相互连接,形成一个庞大的分布式网络。可以轻松地扩展服务规模,支持更多的用户和业务需求,提供更加安全、可靠、高效的通讯服务。
Github系列开源文章《tim实践系列文章》
流数据传输是互联网应用中一个十分重要的基础功能。而流数据的支持是tim中最重要的基础功能之一,tim的流数据实现同样支持1:1,1:n,n:n等基础通讯模式,这些模式几乎涵盖所有流数据的应用场景。
1. 如在webtim:https://tim.tlnet.top 中实现 音视频直播 功能:
2. 在webtim:https://tim.tlnet.top 中实现 实时文件传输 功能:
以上是两个涉及流实时传输的应用场景
虚拟房间的接口有:
以下是tim的java客户端atim的虚拟房间demo程序片段:
tc.VirtualroomRegister(); //注册虚拟房间
tc.VirtualroomRemove("NGhMpCbk2wQ"); //移除虚拟房间,该方法一般无需调用,虚拟房间无数据流后会自动注销
tc.VirtualroomAddAuth("NGhMpCbk2wQ","100001"); //虚拟房间创建人给其他账号添加向虚拟房间推送流数据的权限
tc.VirtualroomDelAuth("NGhMpCbk2wQ","100001"); //移除推送流数据的权限
tc.VirtualroomSub("NGhMpCbk2wQ"); //订阅虚拟房间
tc.VirtualroomSubCancel("NGhMpCbk2wQ"); //取消订阅虚拟房间
tc.PushStream("NGhMpCbk2wQ",new byte[]{1,2,3,4}, (byte) 0); //推送流数据
基于虚拟房间的推流,最终实现的是向tim推流,并进行流的分发
tim自身实现的集群算法,自动形成这样的分布式架构,不需要人为调整,也无法人为干预。
中继服务器只是一个方便理解的称呼,实际上也是tim集群中一个节点。任何一个tim节点都可能成为某个流数据的中继器,这需要tim通过算法计算得到。而且在流分发中,一个流的中继服务器会派生流数据第二备用,第三备用,第四备用...等等的多个备用tim节点,当该中继器断开或其他节点无法连接它时,可以连接到它的后续备用节点上,中继器与集群断开时,第二备用节点变成这个流数据的中继服务器,它会继续派生出多个备用节点。而连接备用节点或派生备用节点等行为都是通过算法自动完成的,无法人为部署。
注册虚拟房间,获取房间号:
1. 客户端调用 tc.VirtualroomRegister(); 获取虚拟房间号,如:NGhMpCbk2wQ
此时,注册者可以向虚拟房间 推送流数据,其他账号则无权限向该虚拟房间推送流数据。
2. 其他账号订阅该虚拟房间的流数据:tc.VirtualroomSub("NGhMpCbk2wQ")
3. 向NGhMpCbk2wQ推送流数据:tc.PushStream("NGhMpCbk2wQ",new byte[]{1,2,3,4}, (byte) 0)
这样,订阅者在终端可以获取流数据。
订阅者可以取消订阅 tc.VirtualroomSubCancel("NGhMpCbk2wQ");
当虚拟房间号 一段时间没有流数据发生时,会被系统自动销毁掉。或者建立者通过调用tc.VirtualroomRemove("NGhMpCbk2wQ");注销掉虚拟房间。
说明:虚拟房间号的产生是随机不重复的。
虚拟房间的各个方法调用与返回,在tim开发使用文档 中有详细讲述
有任何问题或建议请Email:donnie4w@gmail.com或 https://tlnet.top/contact 发信给我,谢谢!