Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于网络的Python游戏+;Django和客户端浏览器轮询_Python_Django - Fatal编程技术网

基于网络的Python游戏+;Django和客户端浏览器轮询

基于网络的Python游戏+;Django和客户端浏览器轮询,python,django,Python,Django,我正在创建一个基于文本的游戏,它实现了一个基本模型,在这个模型中,多个(10+)玩家与数据交互,一个版主观察数据,并设置影响游戏性的特定环境统计数据 最近我开始熟悉Django。在我看来,这将是一个快速创建游戏的优秀工具,特别是因为我的游戏的本质在很大程度上取决于数据集(这非常适合数据库) 我想知道如何将游戏主持人所做的更改“推送”给玩家(例如,主持人可以决定向所有玩家显示一张图片)。游戏是基于回合的,不是实时的,但是某些信息需要大致实时地发布出来 我的想法是:我可以让每个玩家的浏览器定期(比如

我正在创建一个基于文本的游戏,它实现了一个基本模型,在这个模型中,多个(10+)玩家与数据交互,一个版主观察数据,并设置影响游戏性的特定环境统计数据

最近我开始熟悉Django。在我看来,这将是一个快速创建游戏的优秀工具,特别是因为我的游戏的本质在很大程度上取决于数据集(这非常适合数据库)

我想知道如何将游戏主持人所做的更改“推送”给玩家(例如,主持人可以决定向所有玩家显示一张图片)。游戏是基于回合的,不是实时的,但是某些信息需要大致实时地发布出来

我的想法是:我可以让每个玩家的浏览器定期(比如说,每30秒)轮询一次状态,看看是否有来自版主的消息。但这会造成延迟,意味着不同的玩家可能会在不同的时间收到延迟。把这个时间间隔缩短到你可以使用


此外,如果您正在创建一个多人游戏,那么使用一个专为长轮询和多用户交互而设计的服务器,而不是使用标准HTTP服务器和框架,可能会更容易、更高效。

除了Matti提到的长轮询,HTTP服务器也可以通过基本上使用一个非常长的响应来流式传输数据,并且永远不会完成响应(但继续将更多数据推送到客户端)。客户端可以在数据进入时继续响应数据。正如您所总结的,对于任何规模适中的项目来说,轮询可能是一个糟糕的解决方案

在开始之前,您需要对HTTP和Django有一个相当好的理解。这类技术更具前沿性,有时可能会比较复杂


有一个有趣的项目可能值得一看:。它是一个HTTP服务器,支持异步WSGI,并允许您使用Django开发COMET ish应用程序。(免责声明:我实际上没有使用evserver,但它在我的“酷东西”列表中。)

这种解决方案与基于Javascript的即时通讯解决方案(如gmail chat)相比,是否具有可比性,或者这是完全不同的吗?有许多不同的方式来完成整个“Comet”的事情,我不确定gmail聊天使用哪种方式。并发连接的数量是多少?10+。。。平均20个,最多40个。