使用Java中的彗星进行基于网络的聊天?

时间:2011-08-19 11:36:37

标签: jsp web-applications servlets comet cometd

我是彗星新手。

任何人都可以告诉我如何使用java中的彗星(任何web技术例如JSP,servlet struts等)实现基于Web的聊天.. ??

任何帮助都非常适合。

感谢。

1 个答案:

答案 0 :(得分:2)

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

添加spring插件。

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

添加Struts2-JSON-plugin。

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

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

GetMessagesSince有一个消息的getter,它将返回{int,Strings}的列表。它将有一个lastMessage(int)的setter。

现在为WebPage。此时只需使用短轮询(在短暂休息后调用循环)来获取大于'lastMessage'(将从零开始)的消息。使用jQuery魔法你将从GetMessagesSince中获取响应(如果有的话,将使用一些历史记录启动聊天客户端)您将使用列表中的最后一条消息来获取GetMessagesSince的新值。 / p>

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

如果你是认真的,我甚至可能会创建一个演示(它比听起来更容易)。