0

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

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

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

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

基本上我的想法是:

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

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

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

  1. 可用时使用 WebSocket

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

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

4

4 回答 4

3

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

于 2012-10-05T10:52:33.370 回答
2

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

你说你想在客户端使用“Java+JQuery”。你确定你没有混淆 Java 和 JavaScript 吗?这些技术与冰茶长岛冰茶一样多。

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

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

于 2012-10-05T10:54:50.800 回答
1

您可能想查看Openfire 的 Fastpath 插件(服务和网络聊天)。这是一个基于 XMPP 的解决方案,旨在支持您的用例。它是开源和基于 Java 的,因此您可以轻松地对其进行扩展以满足您的目的。

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

于 2012-10-05T18:02:18.120 回答
0

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

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

于 2012-10-05T12:50:20.483 回答