繁体   English   中英

池vs套接字vs其他

[英]Pooling vs sockets vs something else

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

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

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

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

将分享我当前的知识。

拉(投票)
实现简单,应用广泛。
示例:Facebook.com,TeamCity Web界面,用于QPID Message Broker的.NET Client


看看这篇文章
Microsoft Silverlight 3中HTTP轮询双工服务器端通道的性能
我自己注意到的是:需要进行额外的配置工作,可伸缩性和性能可能出现的问题
我能想到的唯一方案-不断交换大量数据
示例:大型多人在线游戏(事件数量庞大,通知时间非常关键)

按需获取更改
典型用于企业桌面应用程序。
示例:TFS(刷新网格(任务和错误),在检出时获取锁定的文件状态)

结论:为您的任务集中存储非常适合

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM