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
。