2012-12-18 80 views
1

我想编写一个基于“云”的应用程序来交互开发游戏。我正在开发Python中的应用程序和工具多年,但到目前为止,它们并不处于'client < - > server'模式。基于Python websocket的应用程序框架/服务器

我不想得到任何比较。我想问问专家,哪个工具能够解决这个特定的问题

我正在挖掘超过两个星期的正确解决方案,我发现了很多不同的服务器/框架。我是客户端 - 服务器领域的新手,所以我无法判断这些库的真正优缺点。

我会大量使用websockets(服务器端的Python,客户端的js),我想选择最好的Python服务器/框架。

的问题是,这蟒蛇服务器/框架:

  1. 将适用于大基于云的应用开发
  2. 会给我可能要伊斯利使用WebSockets
  3. 将提供良好的可扩展性 - 我想以服务于很多用户
  4. 会给我开发这样的应用程序的良好,sutiable框架(或者我应该开发自己的基于服务器像Tornado框架?)
  5. 将是快(与上面的假设)
  6. 将允许我使用一些基于WebSocket的客户端和服务器之间的“RPC的解决方案

我我的研究过程中发现的解决方案包括:

+1

Python中工作多年,并没有客户端 - 服务器的发展? >。> – jcolebrand

+2

是的。并非每个项目都基于客户端 - 服务器逻辑,特别是在开发科学工具时。 –

+1

我可以理解有限的客户端 - 服务器开发,但是...无?看起来很奇怪。 – jcolebrand

回答

0

我做了很多与龙卷风网络服务器和SockJS灵活传输层(提供的WebSocket或“几乎WebSocket的”官能度为不同的浏览器)。该技术堆栈将解决#2,将成为#4和#6的良好基础。但是,从这个角度来看:

适合大基于云的应用开发

提供良好

的可扩展性 - 我想为很多用户

这样的点,可以“解决”与Python框架仅在某种程度上。如果你真的需要可扩展的实时应用程序,可以很好的与用户一起工作,我建议你看看Erlang/OTP堆栈。

+0

由于服务器端的重逻辑(我的自定义首选项),我可能会坚持使用Python。你使用Twisted还是gevent?我现在正在对这3个库进行简要介绍。 –

+0

我使用Twisted和恕我直言,它不像我想要的pythonic :) Gevent对于其他类型的应用程序非常有用,而不是用于控制websocket应用程序中的并发状态。 –

+0

谢谢!我会非常感谢关于gevent的更多信息 - 哪种应用程序有用? –

1

如果您只想使用Python,那么Twisted是一个很好的选择。 Django没有实现web套接字,尽管github上的项目很少,但是仍然不推荐,因为Django在wsgi上运行。龙卷风也很适合websockets。

如果您处于开始阶段并探索选项,我强烈建议您使用Node.js.异步事件处理非常棒。正如名字只是暗示,它的JavaScript不是一些Python框架。

+0

我们的服务器应用程序将非常复杂,所以我真的想用Python开发它,而不是JS。或者也许你在谈论服务器端的一些JS-Python绑定? –

+0

Node.js与Python无关。实际上,Node.js是基于网络的应用程序的最新即将推出。此外,它还拥有一个充满活力的社区,开发的软件包非常优雅地由'npm'管理。如果你不在你的项目之间,并且即将开始,请看看它。即使我从Python切换到Node.js也是如此。 Node.js是'THE'选项,如果你想要可扩展性,你的应用需要更高的并发性。 –

0

我会用Autobahn Websockets(Twisted based)框架去。它有一个干净的实现,它已经过很好的测试(加上它有一个JS客户端库)。

+0

谢谢,请您提供一些更多的信息,为什么扭曲应该比龙卷风或gevent更好? (我在谈论功能和易用性) –

+0

我听说扭曲的学习曲线是'几乎垂直的',维护大的应用程序是问题。你能否就这个话题做一些简单的介绍? –

0

我使用pywebsocket,简单的小...

你可以在这里的代码(96 KB):http://code.google.com/p/pywebsocket/

提示:

尝试使用独立的版本比Apache附加版本

如果您需要hixie支持,请在启动服务器时添加--allow-draft75

相关问题