池化vs套接字vs其他东西

时间:2013-06-05 06:38:01

标签: c# web windows-phone communication

我有一款需要支持多人游戏的Windows Phone游戏。多人游戏类似于Wordament中的游戏:每个人都玩同一个游戏;客户最初获得游戏,然后每个玩家自己玩游戏而不与其他玩家进行任何交互,并且当游戏结束时,收集并显示来自每个人的结果。不同之处在于:在我的应用程序中,游戏不会在指定的时间段后结束,而是在其中一个客户端发出信号时结束。因此,当有人完成游戏(达到目标)时,所有其他人都必须得到有人获胜的通知。

我最初想到的是服务器每次让我们说5秒,看看游戏状态是否已经改变。当客户端完成游戏时,它会发送带有该信息的请求,并且在下一个池请求时,所有其他客户端将获得新状态。这个,IMO,是最简单,最方便的解决方案,因为我只需要一个字节的数据来告诉我游戏是否结束。

实时(以毫秒精度计)并不重要。正如您在上一段中可能已经注意到的那样,可以接受5秒的延迟。

但是,专家们,我问你,双工频道是否更适合这种情况?我发现像Pusher这样的解决方案提供了双向通道,但在我看来,这样的解决方案非常复杂且昂贵(我们的预算非常有限)。

1 个答案:

答案 0 :(得分:1)

将分享我目前的知识。

<强>拉(轮询)
易于实施,应用广泛 示例:Facebook.com,TeamCity Web界面,QPID Message Broker的.NET客户端

<强>推
看看这篇文章
Performance of HTTP polling duplex server-side channel in Microsoft Silverlight 3
我自己注意到的事情:需要额外的配置工作,可扩展性和性能的可能问题 我能想到的唯一场景 - 不断交换大量数据 示例:大型多人在线游戏(事件数量多,通知时间非常严重)

按需更改
适用于bussines桌面应用程序。
示例:TFS(刷新网格(任务和错误),签出时获取锁定文件状态)

结论:合理地填充您的任务

相关问题