PJSIP开发手册之即时消息(十六)
来源:互联网 发布:轻松筹软件下载 编辑:程序博客网 时间:2024/05/15 23:48
第十六章 即时消息
PJSIP基于即时消息可以被用来促进pager,描述在RFC3428(Session InitiationProtocol(SIP)Extension For Instance Messaging)。
另外,PJSIP支持消息组合如RFC3994(Indication of Message Compositionfor Instant Messaging)所述。
即时消息
应用通过构造一个MESSGAE请求来发送即时消息。PJSIP没有定义一个指定的API来组合MESSAGE请求,因为基本上这个流程和创建其他类型的请求相同并且MESSAGE请求不需要特殊的处理。
应用可以选择在一个dialog内还是外发送MESSAGE请求。例如,当一个语音交流的INVITE会话已经被建立,MESSAGE请求可能dialog内被交换。然而,RFC3428明确规定实现时不应该为了将MESSAGE请求和另外一个dialog关联而创建dialog。
发送消息
Dialog外
为了发送dialog外的MESSAGE请求,应用通常构建一个新的请求,调用pjsip_endpt_create_request()。这个函数可以接受一个”text/plain”的消息体。应用接着调用pjsip_endpt_send_request()来有状态地发送这个请求。
下面代码片段展示了如何实现。
Dialog内
为了发送dialog内的MESSAGE请求,应用通常构建一个dialog内的新的请求,调用pjsip_dlg_create_request()。应用接着绑定一个”text/plain”的消息体到请求,并调用pjsip_dlg_send_request()来发送这个请求。
下面代码片段展示了如何创建一个dialog内的MESSAGE请求。
接收消息
Dialog外的到来MESSAGE请求将被应用模块接收。
Dialog内的到来MESSAGE请求将通过这个dialog的回调函数on_tsx_state()通知给dialog usage。
消息组成指示
PJSIP SIMPLE静态库提供构成和解析消息组成指示消息体的助手。消息组成指示助手函数声明在<pjsip-simple/iscomposing.h>头文件中。应用可以包含这个头部域,或者包含< pjsip-simple .h>来包含SIMPLE的所有功能。
PJSIP消息组成指示头文件声明如下函数:
创建XML文件服从“application/im-iscomposing+xml”的说明。唯一需要的参数是pool和is_composing状态。其他参数是可选的加入这个XML文件的属性。last_active属性指示了上次键入的时间。将这个参数赋值为NULL来忽略它。content_type参数指定了正在组成的消息类型。将这个参数赋值为NULL来忽略它。Refresh参数指示接受者可以期望发送者来刷新这个状态。将这个参数赋值为-1来忽略它。
创建一个SIP消息体包含消息组成指示的XML文件。
解析一个包含消息组成指示的XML文件的缓冲。文件中的值将返回在p_is_composing, p_last_active,p_content_type, 和p_refresh参数中,这些都是可选的。
- PJSIP开发手册之即时消息(十六)
- PJSIP开发手册之模块(二)
- PJSIP开发手册之事务(八)
- PJSIP开发手册之总体设计(一)
- PJSIP开发手册之消息发送(七)
- PJSIP开发手册之认证框架(九)
- PJSIP开发手册之用户代理(十)
- PJSIP开发手册之SDP offer/answer框架(十一)
- PJSIP开发手册之SIP事件通知(十三)
- PJSIP开发手册之Presence事件包(十四)
- PJSIP开发手册之Refer事件包(十五)
- PJSIP开发手册之消息元素(三)
- PJSIP开发手册之解析器(四)
- PJSIP开发手册之消息缓存区(五)
- PJSIP开发手册之传输层(六)
- PJSIP开发手册之Dialog Invite会话和Usage(十二)
- iOS开发之PJSIP
- PJSIP手册
- Express4环境搭建
- 关于GMAP开发
- web.xml解读(非常详细)
- iOS开发--从TQRichTextViewDemo中学会分析工程
- Eclipse 中 按 Ctrl+Shift+F 格式化代码时每行容纳的字符数
- PJSIP开发手册之即时消息(十六)
- python官网及说明资料
- Android 5.0(L) ToolBar(替代ActionBar) 实战(四)
- ActiveMQ使用线程池实现消息的生产与消费 .
- 关路灯(MM不哭)解题报告
- JAVA 对象引用,以及对象赋值
- iOS8 UIDatePicker 键盘没有弹出的解决方法
- IO-Blocking和Synchronous
- 8、Ken Burns特效的幻灯片