如果您的TCP连接在您的初始订阅的到期计时器内死亡,如何使用SipSorcery创建新订阅? 写信跟我有一个超时时间的运行,当它经过,如果在连接建立这样我检查:与SipSorcery订阅失败
while (!tcpChannel.IsConnectionEstablished(myRemoteEndpoint))
{
//... using same from tag, but creating new call id saved as SIPRequest _request...
System.Threading.Thread.Sleep(1000 * 60);
tcpChannel.Send(myRemoteEndpoint, Encoding.UTF8.GetBytes(_request.ToString());
}
当时的想法是等待60秒,然后尝试发送一个新的订阅服务器,检查连接是否已建立,如果不在60秒后再次运行,则建立连接。
但是.IsConnectionEstablished似乎有点不可靠这个目的...它像while循环阻塞的东西。我可以看到我的SUBSCRIBE请求已发送,但我没有收到有关该请求的任何回复。
任何想法appriciated。
问题是,如果定时器过期时连接仍然关闭,它将尝试发送请求,但因为不会得到任何响应。大约60秒后,我想检查连接,并发送一个新的订阅请求,因为我知道旧的订阅已到期。对此有何建议? – grmihel
当SPTCPChannel类被要求发送消息时,它应该尝试重新建立连接。达到计时器时,您不需要做任何特殊的事情。重新发送时您是否收到任何日志消息? – sipwiz
你看,问题是当我的计时器过去时,定时器正在停止,SendRequest被启动,并且当收到一个响应,并且它是一个200 OK,那么定时器将在接收到的到期时间内再次启动200 OK msg。因此,新定时器的开始在TimerElapsed事件之外。如果在我试图在经过时间发起SendRequest时连接消失了,我将不会得到任何响应,即使在发送请求后重新建立连接,这意味着我的计时器将不会运行,而我的应用程序将“死亡”,这意味着没有更多的SIP通信。任何方式呢? – grmihel