PJSIP开发手册之事务(八)

2024-01-13 18:32
文章标签 开发 事务 手册 pjsip

本文主要是介绍PJSIP开发手册之事务(八),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第八章 Transaction

整体设计

介绍

PJSIP中的transation表示为pjsip_transaction结构,在<pjsip/sip_transaction.h>中。Transaction的生命周期通常有以下几步:

  • 通过pjsip_tsx_endpt_create_uac()/pjsip_tsx_create_uas()创建
  • 在初始化UAS之后,应用将需要调用pjsip_tsx_recv_msg()传入初始的请求消息,这样这个transaction的状态就从NULL变为TRYING。后续的重传请求将被这个事务终止。
  • 当应用想要使用这个Transaction发送请求或响应消息时,它将调用pjsip_tsx_send_msg()
  • 当有消息传给Transaction时(Endpoint传给的到来消息或TU传给的外出消息),或定时器超时,事务状态会自动改变,并且TU通过on_tsx_state()回调函数将被通知。
  • 如果Transaction的状态变为PJSIP_TSX_STATE_TERMINATED时,这个Transaction将被销毁。应用也可以调用pjsip_tsx_terminate()来强制终止这个Transaction。

定时器和重传

Transaction有两种类型的定时器:重传定时器和超时定时器。这两种定时器的值将被Transaction根据Transaction的类型(UAS或UAC),transport(可靠或不可靠),和请求方法(INVITE和non-INVITE)来设置。

应用只能在全局的基础上改变定时器的时间间隔(可能只有在编译的时候)。

一个Transaction处理包括到来和外出的重传。到来的重传会被Transaction安静地终止和忽略;Transaction不会发出任何通知。Transaction在需要时,会自动重传外出消息;同样也不发出任何通知。

INVITE最终响应和ACK请求

失败的INVITE请求

注意:Transaction严格遵循RFC3261来处理失败的INVITE请求。

客户端

这篇关于PJSIP开发手册之事务(八)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/602403

相关文章

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

Seata之分布式事务问题及解决方案

《Seata之分布式事务问题及解决方案》:本文主要介绍Seata之分布式事务问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Seata–分布式事务解决方案简介同类产品对比环境搭建1.微服务2.SQL3.seata-server4.微服务配置事务模式1

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

基于Python开发PPTX压缩工具

《基于Python开发PPTX压缩工具》在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,不便于传输和存储,所以本文将使用Python开发一个PPTX压缩工具,需要的可以了解下... 目录引言全部代码环境准备代码结构代码实现运行结果引言在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,

MYSQL事务死锁问题排查及解决方案

《MYSQL事务死锁问题排查及解决方案》:本文主要介绍Java服务报错日志的情况,并通过一系列排查和优化措施,最终发现并解决了服务假死的问题,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录问题现象推测 1 - 客户端无错误重试配置推测 2 - 客户端超时时间过短推测 3 - mysql 版本问

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.