SIP SUBSCRIBE接收多个通知

SIP SUBSCRIBE接收多个通知,sip,voip,pjsip,subscribe,Sip,Voip,Pjsip,Subscribe,我正在编写一个SIP客户端,在使用订阅现有客户端(不同的免费软件)时遇到一些奇怪的问题 我正在使用自己的服务器,但这不是问题所在,因为如果我从另一个客户端(pjsip)订阅SUBSCRIBE,一切正常 我正在发送此SUBSCRIBE消息: SUBSCRIBE sip:3009@10.0.0.4 SIP/2.0 Via: SIP/2.0/UDP 10.0.0.7:5060;rport;branch=z9hG4bKPj3893ccd**************** Max-Forwards: 70

我正在编写一个SIP客户端,在使用
订阅现有客户端(不同的免费软件)时遇到一些奇怪的问题

我正在使用自己的服务器,但这不是问题所在,因为如果我从另一个客户端(pjsip)订阅
SUBSCRIBE
,一切正常

我正在发送此
SUBSCRIBE
消息:

SUBSCRIBE sip:3009@10.0.0.4 SIP/2.0
Via: SIP/2.0/UDP 10.0.0.7:5060;rport;branch=z9hG4bKPj3893ccd****************
Max-Forwards: 70
From: <sip:10.0.0.7>;tag=023a965a14a143eb8*******
To: sip:3009@10.0.0.5;tag=8cfb7*********
Contact: <sip:10.0.0.7:5060;ob>
Call-ID: bf5d48fe8ca0***************
CSeq: 14388 SUBSCRIBE
Route: <sip:10.0.0.5;lr;ftag=023a965a14a143eb8*********>
Event: presence
Expires: 600
Supported: replaces, 100rel, timer, norefersub
Accept: application/pidf+xml, application/xpidf+xml
Allow-Events: presence, message-summary, refer
Content-Length:  0
订阅sip:3009@10.0.0.4SIP/2.0
Via:SIP/2.0/UDP 10.0.0.7:5060;rport;分支=z9hG4bKPj3893ccd****************
最大前锋:70
发件人:;标签=023a965a14a143eb8*******
致:sip:3009@10.0.0.5;标签=8cfb7*********
联系人:
呼叫ID:bf5d48fe8ca0***************
CSeq:14388订阅
路线:
活动:出席
有效期:600
支持:替换、100rel、计时器、norefersub
接受:application/pidf+xml、application/xpidf+xml
允许事件:存在,消息摘要,请参阅
内容长度:0
在该消息之后,会收到一条
OK
,但随后我会收到一条
NOTIFY
消息,说明另一个客户端在注册到服务器后所做的每一次状态更改

这个问题不会发生在不同的客户身上

如果有必要的话,我正在Windows 7 64位上开发Visual Studio 2008

有什么想法吗


谢谢

从评论来看,问题似乎是您没有向客户端发送有效的响应,因此客户端正在发送每个NOTIFY请求的多个重传


要生成有效的响应,关键是必须将Via branch参数和CSeq设置为与请求相同的值,请参阅。

听起来客户端运行正常。如果你订阅状态通知,这意味着你希望在状态发生变化时得到通知,而不仅仅是第一次。问题是,订阅之后,我会收到以前的所有通知。当使用PJsip时。订阅时,我只获取最新信息。而且不是客户过滤它,因为我正在通过wiresharkDo查看,你从客户那里退订了吗?如果在活动订阅的中间重新启动服务器,客户端将无法知道,并且可以合理地通知队列,直到通知能够通过它们为止。如果要停止订阅中的NOTIFY请求,请尝试发送Expires标头设置为0的in-dialogue SUBSCRIBE请求。谢谢,我将尝试将Expires设置为0后再发布,但不会更改任何内容。同样的确切结果我也不记得曾经重新启动过服务器。。