如何将WebSocket与Jetty嵌入式自定义服务器一起使用

时间:2012-10-05 08:20:41

标签: java xml websocket xmpp

我是StackOverflow的新手。我搜索过这个话题,但我没有发现任何真正相关的内容。

基本上我需要为我们公司开发一个网络'支持聊天'系统。我知道有很多可用的解决方案,但我们需要一个Java自定义解决方案。我们需要构建一个支持聊天Web系统,访问该网站的用户可以通过聊天请求支持,另一方面,我们有'n'代理处理请求。我们需要将每个对话存储在我们的Cassandra集群中以用于商业智能目的。我们需要在Java(服务器端)和JavaScript + JQuery(客户端)中开发解决方案。

修改 在检查了许多基于XMPP的解决方案之后(很多都已经很老了,不再支持),我可能会使用类似XMPP的自定义协议,它只涵盖我们需要的功能。为了开发解决方案,WebSocket似乎是最合适的技术。

问题是,从哪里开始?我用谷歌搜索但不是关于如何在Jetty中使用WebSocket。有链接吗?任何资源?

基本上我的想法是:

  • 基于Jetty Embedded的CHAT SERVER
  • 需要与服务器通信的Web应用程序(JQuery)的小型前端。
  • 通信基于WebSocket以避免轮询(真正的问题)
  • 基于WebSocket的XML的XMPP样式协议。但这不是问题。

如何将WebSocket与Jetty emdedded自定义服务器和Web应用程序一起使用的问题。

添加 正如许多人所指出的那样,WebSocket不能很好地支持通用用法。相反,AJAX是一种更自然的解决方案,但这意味着使用轮询。我已经找到了一些关于如何通过长轮询来规避问题的例子,但我无法找到基于JQuery的坚如磐石的实现:

  1. 可用时使用WebSocket

  2. 否则,请使用基于JQuery的长轮询

  3. 我认为现在问题更清楚了。对不起我以前的'谈论'风格问题。

4 个答案:

答案 0 :(得分:3)

我使用过Atmosphere Framework(https://github.com/Atmosphere/atmosphere)。他们在此处提供了几个与聊天相关的示例:https://github.com/Atmosphere/atmosphere/tree/master/samples

答案 1 :(得分:2)

我不建议你要求Websocket用于支持系统,因为有很多人使用Internet Explorer但它不支持它并且可能永远不会支持Windows 7之前的Windows版本:{{3} }

你说你想在客户端使用“Java + JQuery”。你确定你没有混淆Java和JavaScript吗?这些技术与http://caniuse.com/websocketsIced Tea具有相同的共同点。

如果您真的想使用Java,则无需使用WebSockets,因为Java applet可以使用普通的TCP或UDP套接字与服务器通信。

如果您指的是JavaScript,我建议您创建一个基于AJAX的解决方案,因为它得到了更广泛的支持,您不需要WebSockets的实时性能来用于聊天应用程序。

答案 2 :(得分:1)

您可能想查看Fastpath plugins (Service and Webchat) for Openfire。这是一个基于XMPP的解决方案,旨在支持您的用例。它是开源的,基于Java的,因此您可以轻松扩展它以满足您的目的。

Smack支持基于Java客户端的解决方案(在工作组包下)。

答案 3 :(得分:0)

如果不要求使用XML,我建议Bristleback Server。您可以选择Jetty作为WebSocket协议引擎。目前Bristleback使用JSON作为消息格式,因此这可能是对您的限制。使用Bristleback,您可以轻松定义消息的收件人,并且无需使用低级WebSockets协议组件即可完成所有操作。还提供了客户端(使用jQuery)库。在我们的网站上,您可以找到一些示例和教程(不断扩展)。

完全披露:我是Bristleback Server的共同创建者之一。