WCF 双向通信中很奇怪的问题
最近在试着做一个聊天程序,支持私聊和群发,测试的时候发现一个很奇怪的问题。
在用户数比较多的情况下,会发现,两个人私聊没有啥问题,但如果某一个发一个群发消息的话,导致其中有一个人或者几个人的通信信道异常,一致心跳检测失败,服务器端认为此用户已掉线。但实际上我都是在一台电脑上测试,网络是正常的。
我基本思路如下:客户端主动每4s发一个心跳包,服务器端接收到包以后更新心跳检测数组。服务器端每7s检查一下心跳包的时间戳。
同时当服务器收到某个人的群发消息时,会将消息广播给所有人,我的问题就是在广播消息的时候,会导致某客户端与服务器信道异常,一致客户端收不到广播消息,同时服务器也收不到心跳消息。为啥会出现信道异常呢。
请牛人帮我分析一下,这是为啥导致的。
下面是客户端的心跳包发送线程。
private void ServerConnectionTest()
{
while (proxy != null && bConnected)
{
try
{
proxy.Update();
}
catch (Exception e)
{
if (iTrytime++ > 3)
{
bConnected = false;
return;
}
else
{
Thread.Sleep(1000);
continue;
}
}
Thread.Sleep(4000);
iTrytime = 0;
bConnected = true;
}
}
谢谢
WCF