【问题标题】:web-based chat using comet in Java?在 Java 中使用 comet 进行基于网络的聊天?
【发布时间】:2011-10-30 13:29:25
【问题描述】:

我是彗星的新手。

谁能告诉我如何在 java 中使用 comet 实现基于网络的聊天(任何网络技术,例如 JSP、servlet struts 等)..??

非常感谢任何帮助。

谢谢。

【问题讨论】:

  • 为什么这个问题被struts2标记了?
  • 谁知道呢,但这很有趣,而且很多人喜欢聊天客户端,它会成为一个很好的教程。

标签: jsp web-applications servlets comet cometd


【解决方案1】:

使用 maven(Struts2 网站)设置一个基本的 Struts2 应用程序。

添加弹簧插件。

创建一个服务对象,它将保存聊天消息的日志 (List<Map<int, String>>)。添加的每条消息都会向列表中添加一个新地图,其索引比之前提交的消息大 1。如果列表达到一定大小,则删除最低消息以保持最大大小。 (有更好的数据结构,但你可以弄清楚)。

添加 Struts2-JSON 插件。

创建两个 json 动作(阅读如何使用 Struts2-JSON-plugin)。 SendMessage 和 GetMessagesSince 操作。还要创建一个基本操作来创建聊天页面(我也会使用约定插件)。

SendMessage 将有一个消息设置器。为 Status 设置一个 getter 是个好主意(返回“成功”或“失败”)。

GetMessagesSince 有一个用于消息的 getter,它将返回一个 {int, Strings} 列表。它将有一个用于 lastMessage(int) 的设置器。

现在是网页。此时只需使用短轮询(在短暂休息后循环调用)来获取大于“lastMessage”的消息(将从零开始)。使用 jQuery 魔法,您将从 GetMessagesSince 获得响应(这将启动聊天客户端并带有一点历史记录,如果有的话)您将使用列表中的最后一条消息来导出 GetMessagesSince 的新值。

现在通过一些并发魔法,您可以实现长轮询。您还可以在消息中添加日期,以便人们知道对话的时间。您还可以通过创建聊天队列的地图来添加不同的消息组,即:Map<String, List<Map<int, String>>> 在这种情况下我选择了字符串来标识您的聊天室。

如果你是认真的,我什至可以创建一个演示(这比听起来容易)。

【讨论】:

  • 只是好奇,你用struts2做了一个聊天客户端吗?
猜你喜欢
  • 1970-01-01
  • 2011-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-15
  • 1970-01-01
  • 2015-06-17
  • 2012-03-28
相关资源
最近更新 更多