广告 《大道至简,给所有人看的编程课》 🔥

《FreeSWITCH参考手册》

1.15 mod_rtc

mod_rtc是一个Endpoint模块,但它只处理媒体,不包含信令,因而,只能配合其它信令模块使用。在该提交信息里是这么说的:『add new stub modulemod_rtc dummy signaling-free media engine endpoint 』。意思是,该模块是一个空的Endpoint模块,而且,该模块是跟信令无关的。

但是,它却可以独立运行。笔者测试了一下,编译安装后,加载该模块可以看到如下的输出:

freeswitch> load`mod_rtc`
[CONSOLE] switch_loadable_module.c:1466 Successfully Loaded `mod_rtc`]
[NOTICE] switch_loadable_module.c:149 Adding Endpoint ‘rtc'

可以看出,它实现了一个名为rtc的Endpoint,我们可以使用如下的字符串试一下建立一个Channel:

freeswitch> bgapi originate rtc/test &echo
+OK Job-UUID: 0f41a0a2-63a5-4229-a8e0-c8e5281cce79

下列命令可以看出它确实建立了一个Channel:

freeswitch> show channels

uuid,direction,created,created_epoch,name,state, ...
725369b7-0731-497f-9500-1e3c128b7626,outbound,2014-05-31 21:07:39,1401541659,N/A,CS_CONSUME_MEDIA,

当然,rtc/test 是我们按规则随便造的一个呼叫字符串,从现在的情况来看,它只是生成了一个Channel,现在还是什么都做不了。所以,我们也没什么可玩的,使用如下命令挂机:

freeswitch> hupall

当然,实现该模块的代码还是很有意思的,它现在仅有短短的463行,对搞不懂mod_sofia的庞大又想学习写一个Endpoint模块的读者来说,是极好的学习材料。这次提交的哈希值是5138f4d,可以用如下命令查看:

$ git show 5138f4d

其实,mod_verto就依赖该模块处理RTP媒体流,只是,用户不需要手工的调用,一般对终端用户而言是不可见的。但如果你是一位开发者,可以从源代码中一窥端倪。

我们将在下一节中讲mod_verto



本书版权所有 © 杜金房及各位贡献者 2016-2023,仅供在线阅读,谢绝一切形式转载。 本书还在写作中,持续更新。 如果你也想写上几句,欢迎加入我们。 | 返回首页 |