SIPGO:基于Go语言开发的开源SIP协议库

在今天的IP网络环境中,SIP无处不在。因为历史原因,绝大部分的SIP协议栈说是基于C语言开发。C语言开发的场景仍然占据目前主流应用场景,并且学习曲线仍然比较高。但是现在,基于Go开发的SIP协议库现在横空出世,部署便捷,高效,集成Pion WebRTC是其主要优势。

SIPGO是一个用于在 GO 语言中编写高速 SIP 服务的库。 它配备了针对快速解析优化的 SIP 协议栈(RFC 3261|RFC3581|RFC6026)。

SIPGO:基于Go语言开发的开源SIP协议库

基于sipgo的库:

  • diago github.com/emiago/diago:包含媒体协议栈的完整 VOIP 库/框架 
  • sipgox github.com/emiago/sipgox:用于快速构建 SIP 电话或 SIP 辅助工具(建议切换至 Diago)

工具/服务:

  • github.com/emiago/diagox 用于 SIP/RTP 扩展的简单入口/出口和注册器 
  • github.com/emiago/gophone 用于便捷测试的命令行软电话

示例:

  • 有状态代理示例/proxysip 
  • 带身份验证的注册示例/register 
  • 使用sipgox的RTP回声示例/dialog

UAS/UAC构建:

使用UA的服务器或客户端句柄,用户可以构建接收和发送或请求。

ua, _ := sipgo.NewUA() // Build user agent
srv, _ := sipgo.NewServer(ua) // Creating server handle for ua
client, _ := sipgo.NewClient(ua) // Creating client handle for ua
srv.OnInvite(inviteHandler)
srv.OnAck(ackHandler)
srv.OnBye(byeHandler)

// For registrars
// srv.OnRegister(registerHandler)
ctx, _ := signal.NotifyContext(ctx, os.Interrupt)
go srv.ListenAndServe(ctx, "udp", "127.0.0.1:5060")
go srv.ListenAndServe(ctx, "tcp", "127.0.0.1:5061")
go srv.ListenAndServe(ctx, "ws", "127.0.0.1:5080")
<-ctx.Done()

项目地址:

https://github.com/emiago/sipgo?tab=readme-ov-file

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论