server push 的 聊天室 【silverlight+WCF duplex】

学习silverlight+WCF duplex的时候做了一个聊天室,顺便加了点小功能

地址:http://202.102.72.40:88/Comments/Chat


欢迎大家来测试


说说过程中遇到过的问题吧:


1.最常见的通道出错问题

常见原因:任何异常如果没有处理都会导致通道出错情况的发生,导致服务端和客户端的通道断开

解决方案:处理所有能够发现的异常,并在通道异常发生之后重新发起会话


2.超时问题

实际场景中,通讯并不会无时无刻的发生,通讯就会遇到各种超时问题,WCF的出错提示并不详细,经过实践发现,最常发生的是这4种超时:ReceiveTimeOut,SendTimeOut,OpenTimeOut, InactivityTimeout

解决方案:建立PollingDuplexHttpBinding的时候调大各个超时时限;客户端有服务端的超时时限要保持一致,避免通道出错;发送心跳讯息或者修改IIS进程池的超时时限


3.广播以及非正常下线问题

用户发送广播,比如当前用户登录如果想立即通知其他用户;非正常下线要及时向所有用户广播

客户端建立并打开信道的时候再服务端将信道保存起来,广播的时候再取出来;

广播发生异常的时候将此信道从存储区域移除,加入信道关闭处理事件,及时发出广播

 

4.UI更新异常问题

原因是Duplex全是异步处理,没有对UI主线程的操作权

解决方案:跟winform类似,取得UI主线程然后提交处理方法,比如:this.dispatcher.BeginInvoke

相关文章

如何在Silverlight4(XAML)中绑定IsEnabled属性?我试过简单的...
我正在编写我的第一个vb.net应用程序(但我也会在这里标记c#,...
ProcessFile()是在UIThread上运行还是在单独的线程上运行.如...
我从同行那里听说,对sharepoint的了解对职业生涯有益.我们不...
我正在尝试保存一个类我的类对象的集合.我收到一个错误说明:...
我需要根据Silverlight中的某些配置值设置给定控件的Style.我...