Flex中的HTTP推送示例

时间:2009-08-31 10:42:20

标签: django flex

我正在尝试创建一个简单的棋盘游戏(一种棋子),用户可以使用Flex应用程序作为客户端在线玩游戏。

我正在使用django应用程序来处理服务器端的游戏。我遇到了这个问题,如果一个用户采取行动,我可以将其发送到服务器,但我如何让对手知道呢?

我想要这样做的方法是创建一个计时器并向服务器发送请求,询问对手是否已完成移动....但是这里我们有2个限制:

1)每个客户端都会产生大量请求(如果我有100个这样的客户端,不确定服务器将如何工作)

2)如果玩家选择时间限制的游戏,例如每场比赛5分钟,那么一旦改变就会在棋盘上显示他们的情况非常重要(没有暂停),但是计时器只会发送请求在计时器事件上,所以如果我将选择勾选间隔为5秒,那将意味着5秒钟另一方将不会意识到情况的变化。

4 个答案:

答案 0 :(得分:2)

一种方法是使用客户端的TCP Socket连接回服务器。让客户端侦听数据,并让服务器在需要时发送更新。这可能需要更改防火墙(允许您将使用的端口)和接受多个持久客户端连接的服务器。这可能仅适用于固定数量较少的客户端,因为如果您打开多个连接,则会产生一些服务器开销。

如果您有防火墙限制并需要使用HTTP端口,则可以调查Comet实施。我在第一段中提出的内容或多或少是相同的 - Comet只是通过HTTP来实现,并标准化了沟通的某些方面。

答案 1 :(得分:2)

这样想。如果您每1或2秒轮询一次,那么它应该足够快,不会被任何一个客户端注意到。检查更改的简单REST请求非常简单,现代Web服务器应该能够毫无问题地处理100个此类请求。

立即使用计时器实现它,运行一些性能测试并在完成后担心服务器。

如果您以后担心,您可以随时拥有毕业计时器。例如,在100ms,200ms,400ms,800ms,1600ms等之后检查......带帽的时间为5秒或者其他什么。

请查看此代码以获取一些想法,因为聊天使用了类似的概念:http://anantgarg.com/2009/05/13/gmail-facebook-style-jquery-chat/

答案 2 :(得分:2)

最好的方法是使用AMF(Action Message Format)与Flex应用程序进行通信 请参阅PyAMF Django HowTo,特别是参考资料部分中的链接以及示例。

答案 3 :(得分:0)

查看Tour de Flex中的消息传递示例。他们使用各种后端,包括BlazeDS。但我不确定是否有Python实现的消息传递。