SipSorcery를 사용하여 새 구독을 만들 수 있습니까? TCP 연결이 초기 가입 만료 타이머 이내에 사망 한 경우 어떻게합니까? 쓰기 지금은 만료 타이머를 실행하는 데 문제가 있습니다, 그것은 경과 할 때 연결이 다음과 같이 설정되어있는 경우, 나는 확인하고 있습니다 :Subscription with SipSorcery
아이디어는 다음 60 초 정도 기다렸다가 새를 보내려고했다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());
}
SUBSCRIBE를 서버에 연결하고 60 senconds 후에 연결이 설정 될 때까지 다시 실행되지 않으면 연결이 설정되었는지 확인하십시오.
그러나 .IsConnectionEstablished는이 목적에 조금 신뢰할 수없는 것처럼 보입니다 ... while 루프가 무언가를 차단하고 있습니다. 내 SUBSCRIBE 요청이 발송되었음을 알 수 있지만 요청에 대한 응답을받지 못했습니다.
모든 아이디어가 유용합니다.
타이머가 경과 할 때 연결이 여전히 다운 된 경우 요청을 보내려고하지만, 아무런 응답도 얻지 못한다는 것이 문제입니다. 약 60 초가 지나면 이전 구독 만료에 도달 했으므로 연결을 확인하고 새 구독 요청을 보내려고합니다. 이것에 대한 제안? – grmihel
SPTCPChannel 클래스는 메시지를 보낼 것인지 묻는 메시지가 표시되면 연결을 다시 설정해야합니다. 타이머에 도달하면 특별한 일을 할 필요가 없습니다. 재전송이 발생하면 로그 메시지가 나타 납니까? – sipwiz
알다시피, 문제는 내 타이머가 경과하면 타이머가 중지되고 SendRequest가 시작되고 응답이 수신되고 200 OK가되면 타이머가 수신 된 만료 시간 내에 다시 시작된다는 것입니다. 200 OK 메시지. 따라서 새 타이머의 시작은 TimerElapsed 이벤트 외부에 있습니다. 경과 시간에 SendRequest를 시작하려고 할 때 연결이 끊어지면 응답을받지 못합니다. 요청이 전송 된 후 연결이 다시 설정 되어도 타이머가 실행되지 않고 내 응답이 전송되지 않습니다. 응용 프로그램이 더 이상 SIP 통신을 의미하지 않는 "죽을 것이다". 이것에 어떤 식 으로든? – grmihel