2011-08-19 38 views
1

我是新来的彗星。在Java中使用彗星进行基于Web的聊天?

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

任何帮助大大appriciated。

谢谢。

+0

为什么这个问题已被标记为struts2? –

+0

谁知道,但它很有趣,很多人喜欢聊天客户端,这将是一个很好的教程。 – Quaternion

回答

2

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

添加spring插件。

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

添加Struts2-JSON插件。

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

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

GetMessagesSince为消息提供了一个getter,它将返回{int,Strings}列表。它将为lastMessage(int)设置一个setter。

现在为WebPage。此时只需使用短轮询(在短暂休息后循环中调用)以获得比'lastMessage'(将从零开始)更大的消息。使用jQuery魔法,您将获得GetMessagesSince的响应(如果有任何历史记录,它将启动聊天客户端)。您将使用列表中的最后一条消息为GetMessagesSince派生新值。

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

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

+1

只是好奇,但你做了一个聊天客户端与struts2? – Quaternion