WebRTC学习之 Intel® Collaboration Suite for WebRTC源码流程解读

news/2024/7/4 13:39:48

年后回来,因为新项目的需求,开始了解WebRTC相关的知识。目前接触的是 Intel® Collaboration Suite for WebRTC。刚开始看SDK发现很多概念是我目前不知道的,于是恶补了一周基本的网络相关的知识。再来看Demo和Jar包里面的源码,对其代码逻辑的理解更深一步了。下面从代码层面分模块对Demo的设计和使用进行总结:

首先声明一下核心的对象:

private ConferenceClient mRoom;

无论是登录还是发布、订阅Stream,我们都需要mRoom来进行相关的逻辑的控制。

注明:本Demo支持的Android 最低版本是15. 即 Android 4.0.3版本及以上。

初始化Conference(会议室)

相关代码段:

ConferenceClientConfiguration config = new ConferenceClientConfiguration();
List<IceServer> iceServers = new ArrayList<IceServer>();
iceServers.add(new IceServer(stunAddr));
//iceServers.add(new IceServer(turnAddrTCP, "woogeen", "master"));
//iceServers.add(new IceServer(turnAddrUDP, "woogeen", "master"));
try {
    config.setIceServers(iceServers);
} catch (WoogeenException e1) {
    e1.printStackTrace();
}
mRoom = new ConferenceClient(config);
mRoom.addObserver(this);

  

在初始化Conference(会议室)的时候,需要设置IceServer作为创建之前的配置信息,并设置本类为观察者,用来接收会议室相关的状态回调。配置IceServer的用途是为了创建交互式连接,ICE是一种标准的穿透协议,利用STUN和TURN服务器来帮助建立连接。

在这里建立的连接是长连接,通过阅读SDK中Jar包的源码可以了解到:

SocketClient  // 长连接客户端
SocketClient.SocketClientObserver  // 长连接客户端观察者(接口),由ConferenceClient实现,这样用户只需要使用ConferenceClient就可以了

通过建立Socket长连接,然后根据相关的数据或者状态的变化,来通知ConferenceClient相关的事件。

 

加入Conference(会议室)

加入会议室的API代码:

mRoom.join(tokenString, /*options,*/new ActionCallback<User>() {

    @Override
    public void onSuccess(User myself) {
        // 链接成功,加入房间成功
        Log.d(TAG, "My client Id: " + myself.getId());
    }

    @Override
    public void onFailure(final WoogeenException e) {
        // 链接失败,加入房间失败
    }
});

可以看出来,我们在代码中只需要调用mRoom的join方法,将之前链接,就可以加入会议室Room,并通过回调方法来。

在加入房间之间,需要去基础服务器,去获取用户的token,token用来验证用户的身份。

转载于:https://www.cnblogs.com/renhui/p/6386882.html


http://www.niftyadmin.cn/n/3124518.html

相关文章

XSD-JAVA

url&#xff1a;http://my.oschina.net/u/138995/blog/183094 person.xsd <?xml version"1.0" encoding"UTF-8"?> <xs:schema xmlns:xs"http://www.w3.org/2001/XMLSchema" elementFormDefault"qualified"><xs:eleme…

SQLPrompt 7.2发布

SQLPrompt 7.2发布 下载地址&#xff1a;http://www.red-gate.com/products/sql-development/sql-prompt/ 红门的热门产品SQLPrompt 发布了最新版本7.2&#xff0c;已经支持SQL Server2016 关键字高亮更加人性化 新功能亮点&#xff0c;当执行update/delete的时候没有加where它…

windows 10 常用快捷键

alt space&#xff1a;最大、最小、关闭&#xff1b;多屏互动&#xff1a;winp 仅此电脑屏幕&#xff1b;复制&#xff1b;拓展&#xff1b;仅第二屏幕&#xff1b;0. 不同于之前版本的变化 切换输入法&#xff1a;shift alt&#xff1b; win space&#xff1a;windows 10 系…

关于原生html和js上传文件的处理

目录基本结构样式处理为啥要做样式处理怎么处理样式input内用到的属性及用法accept 可以上传的文件类型获取上传后的文件sth.files字段解释获取视频文件的时长获取上传后文件生成的blob链接参考文档基本结构 <label for"sth">上传文件</label> <inpu…

性能更好的js动画实现方式---requestAnimationFrame

用js来实现动画&#xff0c;我们一般是借助setTimeout或setInterval这两个函数&#xff0c;css3动画出来后&#xff0c;我们又可以使用css3来实现动画了&#xff0c;而且性能和流畅度也得到了很大的提升。但是css3动画还是有不少局限性&#xff0c;比如不是所有属性都能参与动画…

UVA - 294 Divisors (约数)(数论)

题意&#xff1a;输入两个整数L&#xff0c;U(1<L<U<109,U-L<10000),统计区间[L,U]的整数中哪一个的正约数最多。如果有多个&#xff0c;输出最小值。 分析&#xff1a; 1、求一个数的约数&#xff0c;相当于分解质因子。 2、例如60 2 * 2 * 3 * 5。对于2来说&…

9个 SSH常用命令选项

9个 SSH常用命令选项 SSH 是什么 SSH&#xff08;全称 Secure Shell)是一种加密的网络协议。使用该协议的数据将被加密&#xff0c;如果在传输中间数据泄漏&#xff0c;也可以确保没有人能读取出有用信息。要使用 SSH&#xff0c;目标机器应该安装 SSH 服务端应用程序&#xff…

关于js中namespace命名空间模式

命名空间有助于减少程序中所需要的全局变量的数量&#xff0c;并且同时有助于避免命名冲突或过长的名字前缀。 关于命名空间的例子&#xff1a; 1 /**2 * 创建全局对象MYAPP3 * module MYAPP4 * title MYAPP Global5 */6 var MYAPP MYAPP || {};7 8 /**9 * 返回指定的命名空间…