Javascript 基于Python websocket的应用程序框架/服务器

Javascript 基于Python websocket的应用程序框架/服务器,javascript,python,frameworks,webserver,websocket,Javascript,Python,Frameworks,Webserver,Websocket,我想编写一个基于“云”的应用程序,以交互方式开发游戏。多年来,我一直在用Python开发应用程序和工具,但到目前为止,它们还没有采用“客户机-服务器”模式 我不想得到任何比较。我想问问专家,哪种工具能够解决这个特定问题 我花了两个多星期寻找合适的解决方案,发现了很多不同的服务器/框架。我是客户机-服务器世界的新手,所以我无法判断这些库的真正优点或缺点 我将大量使用WebSocket(服务器端使用Python,客户端使用js),我希望选择最好的Python服务器/框架 问题是,哪个python服务

我想编写一个基于“云”的应用程序,以交互方式开发游戏。多年来,我一直在用Python开发应用程序和工具,但到目前为止,它们还没有采用“客户机-服务器”模式

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

我花了两个多星期寻找合适的解决方案,发现了很多不同的服务器/框架。我是客户机-服务器世界的新手,所以我无法判断这些库的真正优点或缺点

我将大量使用WebSocket(服务器端使用Python,客户端使用js),我希望选择最好的Python服务器/框架

问题是,哪个python服务器/框架:

  • 将适用于大型基于云的应用程序开发
  • 这将使我有可能轻松使用WebSocket
  • 将提供良好的可扩展性-我想为很多用户服务
  • 将为我提供开发此类应用程序的良好、可用的框架(或者我应该基于Tornado之类的服务器开发自己的框架吗?)
  • 将很快(根据上述假设)
  • 将允许我在客户端和服务器之间使用一些基于websocket的“rpc”解决方案
  • 我在研究中发现的解决方案包括:

    • +

    我经常使用Tornado webserver和SockJS作为灵活的传输层(为不同的浏览器提供websocket或“几乎websocket”的功能)。这个技术堆栈将解决#2,为#4和#6打下良好的基础。但从这个角度来看:

    适合基于大型云的应用开发,提供良好的性能

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


    这些问题只能在某种程度上用Python框架“解决”。如果您确实需要可扩展的实时应用程序,它可以与许多用户配合使用,我建议您查看Erlang/OTP堆栈。

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


    我强烈建议,如果您正处于探索选项的初级阶段,请使用Node.js。这对于异步事件处理来说是非常棒的。顾名思义,它的javascript不是一些python框架。

    我会选择(基于Twisted的)框架。它有一个干净的实现,并且经过了很好的测试(加上它有一个JS客户端库)。

    我使用的是pywebsocket,简单而小巧

    您可以在此处获得代码(96 KB):

    小贴士:

    请尝试独立版本,而不是Apache附加版本

    如果需要hixie支持,请在启动服务器时添加--allow-draft75 我上传了一个小演示,它与Python3.5一起使用

    在python中工作多年,没有开发客户机-服务器?>。>对不是每个项目都是基于客户机-服务器逻辑的,尤其是在开发科学工具时。我可以理解有限的客户机-服务器开发,但是。。。没有一个看起来很奇怪。@WojciechDanilo既然你还没有选择任何答案,你能回答你自己的帖子并告诉我们你使用了什么解决方案以及为什么吗?我也在寻找一个websocket库,它的需求和你的差不多。我们的服务器应用程序将非常复杂,所以我真的想用Python而不是JS开发它。或者您正在谈论服务器端的一些JS Python绑定?Node.JS与Python无关。事实上,Node.js是最近推出的一款基于网络的应用程序。此外,它还有一个充满活力的社区开发包,这些包由
    npm
    非常优雅地管理。如果您不在项目的中间位置,并且即将开始,请看一看。甚至我在中途也从Python切换到了Node.js。Node.js是
    选项,如果您想要可扩展性,并且您的应用程序需要更高的并发性。谢谢,您能提供更多信息说明为什么twisted比tornado或gevent更好吗?(我说的是功能性和易用性)我听说扭曲的学习曲线“几乎是垂直的”,维护大型应用程序是个问题。关于这个主题,你能不能也简单介绍一下?我可能会坚持使用Python,因为服务器端的逻辑很重(我的自定义偏好)。你用的是Twisted还是gevent?我现在正在整理这3个库。我使用了Twisted和IMHO,它不是我想要的那种pythonic:)Gevent对其他类型的应用程序有用,而不是控制websocket应用程序中的并发状态。谢谢!如果您能提供更多关于gevent的信息,我将不胜感激——它对什么样的应用程序有用?