SL多播获得授权最多需要21秒
原文的描述比较拗口,本人经过测试验证最多需要21秒。
测试后的简单理解如下,最多发送3次公告,前两次发送公告后最多等待3秒,第三次发送公告后最多等待12秒。第一次发送公告后3秒未获得授权会等3秒。
按时间顺序描述如下,假设第3次发送公告后还未获得授权:
第0秒发送第一次公告,
第3秒后未获得授权,等待3秒
第6秒时发送第二次公告,等待3秒,
第9秒未获得授权,发送第三次公告,等待12秒,
第21秒未获得授权,进入60秒避退期,即接下来的60秒来不能重复发送公告。
msdn原文描述如下:
如果 Silverlight 运行时在 3 秒内未收到匹配的授权消息,则 Silverlight 运行时将假定公告已删除并且将重新发送一个新公告。 如果未收到任何匹配的授权,则在 6 秒后将重复相同的重新发送。 如果在第三次重新发送后 12 秒尚未接收到匹配的授权消息,则策略检查将被视为已失败,并且应用程序将接收 SocketException 以及 SocketError.AccessDenied。 如果在超时前的任何时间点收到了匹配的授权消息,则策略检查将成功,并且允许应用程序访问多播组。
在策略检查过程中应用程序发起的加入多播组的任何其他尝试都将等待,直到策略检查完成后再开始。 如果某个策略检查失败,则在下一个 60 秒内加入多播组的另一个尝试将等待,直到超过这个 60 秒的退避期后,再开始策略检查。 这样可以避免恶意应用程序或编写拙劣的应用程序使用反复的策略检查在网络上造成过多的流量。