Code Monkey home page Code Monkey logo

sip-app's Issues

丢包问题

关于丢包问题讨论结果如下

  1. 通话建立时,主叫方的 INVITE 消息丢失
    1. 利用定时器解决,超时后释放资源,本次呼叫失败
  2. 通话过程中,用户 A 想结束通话,但是 A 域发出去的 BYE 消息丢失,用户 A 的资源可以正常释放(由于是跨域呼叫,A 域内的 XMS 中实际占用了 2 个 XMS 的资源,一个是用户 A 的,另一个是用来代理用户 B 的,根据标准 SIP 流程的设计,到这里 2 个 XMS 资源只能释放用户 A 的,用来代理用户 B 的 XMS 资源需要得到 B 域的 OK 消息响应才可以释放,但目前的情况是 BYE 消息都没能给 B 域发过去更别想着 B 域能回 OK,况且这个 OK 本身还可能会丢失,所以 A 域的 XMS 中用来代理 B 域的那个资源的释放是个问题),B 域由于没有及时收到 BYE 消息无法立刻释放本域资源(这里同样存在 2 个资源的问题)。这时候有如下方法
    1. 过一段时间用户 B 主动发 BYE 消息结束通话,资源释放
    2. 可以为每个建立起来的通话设置一个定时器,超过设定的时间后双方强制释放,简单粗暴
  3. 通话过程中,发生严重的网络故障(比如拔掉网线,表现为所有的消息都一定不通,而不是偶尔丢包)
    1. 设置心跳检测机制:在 3 个心跳保活周期内没收到对方应答就认为发生了网络故障,立刻释放资源。由于心跳检测同样是跨域的消息,需要底层的几个项目(比如樊总的网关)的配合,放行心跳检测消息。即便是这样,我们也要清楚在这种网络环境下依然存在心跳消息本身丢失的可能性

上面关于第 2 条的解决方法需要进一步确认,我们先实现第 1、3 条以及第 2 条中的代理资源释放的问题

另外根据这么长时间的调试我们发现 XMS 是对网络很敏感的,网络的波动会对其造成影响。比如刚开始一切正常,网络出现了点问题然后又恢复了,但是这时 XMS 可能会出现不工作的情况

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.