Websockets服务器在Java(或PHP)



我可能需要你的经验,根据服务器实现目前正在发展的Websockets在HTML5。我们希望在客户端站点上使用通用浏览器的项目中使用该技术。我们现在需要的是一个满足我们需求的web服务器。这些都是:

  • 用Java或PHP编写,因为这些是目前项目中所有程序员使用和掌握的语言。由于似乎还没有有前途的PHP实现,我倾向于把重点放在Java站点上。
  • 越快越好。我们不希望在生产环境中使用太多,但我们需要能够在独立主机上几乎实时地同步两个浏览器。
  • 容易扩展。我们需要在websockets之上实现我们自己的协议,所以我们想要最大可能的灵活性。
  • 易于使用,良好的文档和积极开发。由于我们必须很快地实现第一个可运行的实现,并且我希望在此期间开发人员会有一些变化,如果进入服务器编程并不难,那将是非常好的。

我已经看了一些看起来很有前途的服务器/框架,例如Jetty, Netty和jWebSocket。我还发现了一些关于这个话题的旧讨论。但是,对于那些已经使用过Java(或PHP)来处理Websockets的人,我很乐意提供一些当前的经验或建议。是否有一些实现特别合适或者我们绝对不应该使用?

编辑:澄清一下:当我说到在Websocket之上实现我们自己的协议时,我的意思是有某种插件机制,这样我们就可以使用Websocket向服务器发送xml消息,然后使用插件将它们解释为我们喜欢的一些服务器动作。我想每个服务器的实现都支持这个,但是如果编写这样的插件不是太难的话,那就太好了。

我没有任何PHP经验,所以我将给你我对Java(和python方面)的看法。

对于Java:

您有了非常常见和安全的Tomcat选择。它是开发最活跃的服务器之一,它是开源的,从它庞大的社区得到了很多支持/帮助,据我所知(但没有测试过),它具有相当的可扩展性,它还有一个非常成熟的控制台来监控你网站的不同参数。

你也有其他选择,如Caucho's Resin,他们有一个非常小但聪明的团队,他们积极开发他们的web服务器。他们的新心跳服务提供了良好的可伸缩性(还是从我所读到的内容来看)。

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

Python的

:

我更懂Java而不是Python,但Python绝对是一门很棒的语言,非常非常容易学习。我在这里推荐Python的原因是因为AppEngine还允许开发人员选择Python。Python语言的作者/创造者现在在AppEngine团队,所以即使Python和Java api几乎完全相同,他们有时也会为Python提供新的/更好的api。例如,我认为Python提供的数据存储API更简单,并且针对Google数据存储进行了优化。另外,既然你要用python,你可以用Django和AppEngine。

我最近意识到的第二个选择是龙卷风web服务器,它是由FriendFeed开发的,然后被Facebook购买和使用。它也在积极发展。但我之所以提到这一点,是因为Tornado的重点与AppEngine一样,都是高web应用性能和可扩展性。我没有经验,但我对它的技术很感兴趣,因为没有人能否认Facebook需要一个非常高性能/可扩展的web服务器。

最后的想法:

一般来说,你会发现在大多数web服务器(甚至是Asp. js)提供的api之上构建自己的协议并不是很困难。净MVC)。但从我对AppEngine的测试来看,它真正关注的是在其之上构建何种协议的灵活性。对我来说,它就像是一个RPC服务器,工作在HTTP之上。如果你使用Python,这就变得更加明显了,因为它的一些语言结构。

相关内容

  • 没有找到相关文章

最新更新