我已经使用WCF net.tcp和
WPF为前端创建了一个在线扑克系统.它工作得很好,但我觉得当我将前端转换为Silverlight时,我可以改进一些东西.
我对其他建筑师的一个问题是游戏大厅应该如何刷新?扑克游戏大厅不断更新,包括玩家数量,每小时手数和翻牌百分比等统计数据.
由于在任何给定时间都可能有数百个游戏正在进行中,我不太确定每5秒返回整个游戏列表(轮询)是最佳的.我正在考虑使用delta查询,因为许多游戏都没有状态更新(例如:桌面上没有玩家).
我正在考虑使用更新时间,因此每次客户端(可能是数百甚至数千!)轮询时,只返回在5,10或更多秒内更新的记录.
游戏大厅客户当然会负责协调新数据,但我认为这可以帮助减轻游戏服务器的一些负担.
有任何想法吗?
最佳答案 您可以选择客户端在服务器上注册以进行循环更新的方法.因此,服务器将提供具有客户端必须实现的回调合同(双工合同)的服务合同.有关详细信息,请参阅
here.
另一方面,可能很难从Silverlight客户端使用双工合同(我不确定它是否可能),因此使用更新时间间隔进行轮询是一种合法的方法.服务器应该将当前时间戳与轮询周期的响应数据一起发送,客户端将通过其下一个请求发送回来,以指示自请求更新数据以来.避免比较客户端和服务器时间.