【问题标题】:How to use WebSocket with a Jetty emdedded custom server [closed]如何将 WebSocket 与 Jetty 嵌入式自定义服务器一起使用 [关闭]
【发布时间】:2012-09-26 09:00:51
【问题描述】:

我是 StackOverflow 的新手。我搜索了有关该主题的内容,但没有找到任何真正相关的内容。

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

编辑: 在检查了许多基于 XMPP 的解决方案(很多都非常陈旧且不再受支持)之后,我可能会选择一个类似于 XMPP 的自定义协议,它只涵盖我们需要的功能。开发解决方案 WebSocket 似乎是最合适的技术。

问题是,从哪里开始?我用谷歌搜索,但对如何将 WebSocket 与 Jetty 一起使用一无所知。有链接吗?有资源吗?

基本上我的想法是:

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

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

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

  1. 在可用时使用 WebSocket

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

我认为现在问题更清楚了。抱歉我之前的“谈论”风格问题。

【问题讨论】:

  • 正如您所说您是 SO 新手,我建议您阅读常见问题解答stackoverflow.com/faq#close,了解如何在这里提出好的问题。这种形式的问题可能会被否决并关闭,因为它无法准确回答,只能“谈论”。
  • 对不起,由于我也是这个话题的新手,我很难提出一个简短而准确的问题。我可以根据反馈(如果有的话)对其进行改进,否则如果它不符合 SO 政策,它可以被关闭。
  • @jabal:我已将问题编辑为简短和集中!感谢您的反馈!

标签: java xml websocket xmpp


【解决方案1】:

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

【讨论】:

  • 哇,很多有趣的东西!任何在线示例无需安装即可测试?它似乎具备了人们所需要的一切,使用这个框架有什么缺点吗?
【解决方案2】:

我不建议您将 Websocket 用于支持系统,因为有很多人使用 Internet Explorer 尚不支持它,并且可能永远不会在 Windows 7 之前的 Windows 版本上支持它:http://caniuse.com/websockets

您说您想在客户端使用“Java+JQuery”。你确定你没有混淆 Java 和 JavaScript 吗?这些技术的共同点与Iced TeaLong Island Iced Tea 一样多。

当你真的想使用 Java 时,你不需要使用 WebSockets,因为 Java 小程序可以使用普通的 TCP 或 UDP 套接字与服务器通信。

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

【讨论】:

  • 感谢您的回复。是的,我的意思是 Javascript,这是我的错字(现已修复)。正如我的第二次编辑(见上文),混合解决方案似乎是要走的路:WebSockets(如果支持)+AJAX(否则)。但我正在寻找一个坚如磐石的图书馆。
  • socket.io 可能是您正在搜索的库。它在可用时使用 Web 套接字,并具有许多替代后备技术,例如 ajax、adobe flash 和永远 iframess。
  • 谢谢,Socket.IO 是排名第一的候选者。我也在评估在 Atmosphere Framework 中使用它。
【解决方案3】:

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

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

【讨论】:

  • 有趣的项目。没有 XML 不是强制性的,JSON 很好。是否也可以将它集成到支持 AJAX 轮询的解决方案中?如果不支持 WebSocket。
【解决方案4】:

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

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

【讨论】:

  • 该插件最后一次更新好像是2009年,我不太喜欢使用没有积极维护的项目。
猜你喜欢
  • 2013-03-16
  • 2022-08-18
  • 1970-01-01
  • 1970-01-01
  • 2017-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-08
相关资源
最近更新 更多