1

我是彗星的新手。

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

非常感谢任何帮助。

谢谢。

4

1 回答 1

2

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

添加弹簧插件。

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

添加 Struts2-JSON 插件。

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

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

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

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

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

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

于 2011-08-19T16:34:56.333 回答