2011-11-30 58 views
3

我可以根据需要在HTML5当前不断变化的WebSockets服务器实现你的经验。我们希望将这项技术用于在客户端网站上使用常见网页浏览器的项目。我们现在需要的是满足我们要求的网络服务器。它们是:WebSockets的服务器

  • 用Java或PHP编写,因为这些是当前所有程序员在项目中使用和掌握的语言。由于似乎还没有很有前途的PHP实现,我倾向于专注于Java网站。
  • 尽可能快。我们并不期望在生产中使用过多,但我们需要能够在独立主机上近乎实时地同步两个浏览器。
  • 易于扩展。我们需要在websocket之上实现我们自己的协议,所以我们希望最大的灵活性。
  • 易于使用,有据可查的,积极的发展。由于我们必须快速实现首次运行的实现,并且由于我期望开发人员在此期间发生一些变化,如果不难进入服务器编程,那将是非常好的。

我已经看过一些看起来很有前途的服务器/框架, Jetty,Netty和jWebSocket。我还发现了一些关于这个主题的更老的讨论。但是,对于那些已经使用Java(或PHP)与Websockets一起工作的人的现有经验或建议,我会很高兴。是否有一些特别合适的实现或者我们绝对不应该使用的实现?为了清楚起见:当我谈到在Websockets上实现我们自己的协议时,我的意思是有某种插件机制,以便我们可以使用WebSocket将XML消息发送到服务器,然后使用插件将它们解释为我们喜欢的某些服务器操作。我猜每个服务器实现也支持这个,但如果编写这样的插件不是太困难,那将是很好的。

回答

1

我没有与任何PHP经验,所以我会给你我对Java(和Python侧)的意见。

对于Java:

你有你非常常见和安全的Tomcat选择。它是最积极开发的服务器之一,它的开源,大型社区提供的大量支持/帮助,从我读过的(但没有经过测试)它可以很好地扩展,还有一个非常成熟的控制台来监视针对您网站的不同指标。

您也有其他选择,例如Caucho的树脂,谁拥有一个非常小而灵巧的团队谁积极发展自己的网络服务器。他们的新心跳服务提供了良好的可扩展性(再次从我读过的)。

然后你也有谷歌的AppEngine这是所有关于可扩展性。他们的API(两个,服务器和客户端)已经开始专注于实时的Web应用程序,因此它是一个更容易一点的,而不必担心你经常不得不做出与其他服务器的服务器相关的优化创建高性能的Web应用程序。他们有API用于在服务器和客户端之间为非常实时的应用程序创建“通道”。 AppEngine团队还拥有用于快速/高效分析数据的新MapReduce API。出于这些原因和个人认为他们开创了新的Web技术/标准,我个人一直倾向于AppEngine。如果你保持cpu/data usuage低,那么它是免费的,但如果你需要全面部署,它开始变得昂贵,所以研究。如果你的项目更多的是为了娱乐/学校,它的免费配额已经足够,所有的开发工具/ API都是免费的,所以它是完美的。

对于Python:

我比Python更多的Java,但是Python绝对是一个伟大的语言,非常非常非常简单易学。我在这里推荐Python的原因是因为AppEngine还允许开发人员选择Python。 Python语言的作者/创建者现在已经在AppEngine团队中,所以即使Python和Java API几乎完全一样,他们有时也会为Python提供新的/更好的API。例如,我认为随Python提供的数据存储API更容易一些,并针对Google数据存储进行了优化。另外,由于您使用的是Python,因此您可以在AppEngine中使用Django。

我最近意识到的第二个选择是由FriendFeed开发的龙卷风web服务器,然后由Facebook购买和使用。它也积极发展。但是我提出这个问题的原因是Tornado的重点,就像AppEngine的一样,是Web应用程序的高性能和可扩展性。我没有经验,但我对它的技术感兴趣,因为没有人可以竞争Facebook需要一个非常高性能/可扩展的Web服务器。

一些最后的想法:

一般来说,你会发现,这是不是很困难的基础上,从大多数Web服务器(甚至Asp.NET MVC)提供的API的顶部自己的协议。但是从我已经能够使用AppEngine进行测试的角度来看,它确实专注于灵活地构建它的顶级协议。对我来说,它几乎就像一个在HTTP之上工作的RPC服务器。如果仅仅因为一些语言结构而使用Python,那就更加明显了。

+0

感谢您的回答。 Google AppEngine的确看起来很有前途,但我担心它不适用于Websockets。另外,我们已经有了一个现有的服务器基础设施(使用Tomcat,但不幸的是它不支持Websockets),并且将为我们提供这个项目。 – j0ker

+0

是的,没错。这个问题已经得到AppEngine的确认,并且有关使用TyphoonAE的方法。现在,AppEngine有一个类似用例的Channel API,谷歌自己使用Google API和GChat相信的东西。但我确信AppEngine也会很快发布Web Sockets API。 –

相关问题