Jsp 在Java中使用comet进行基于web的聊天?

Jsp 在Java中使用comet进行基于web的聊天?,jsp,web-applications,servlets,comet,cometd,Jsp,Web Applications,Servlets,Comet,Cometd,我是新来的彗星 有谁能告诉我如何在java中使用comet实现基于web的聊天(任何web技术,如JSP、servlet struts等) 任何帮助都是非常感激的 谢谢。使用maven(Struts2网站)设置一个基本的Struts2应用程序 添加spring插件 创建一个服务对象,该对象将保存聊天消息日志(列表)。添加的每封邮件都会向列表中添加一个新映射,其索引1大于提交邮件的上一个索引1。如果列表达到一定大小,则删除最低的消息以保持最大大小。(这方面有更好的数据结构,但您可以找到答案) 添加

我是新来的彗星

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

任何帮助都是非常感激的


谢谢。

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

添加spring插件

创建一个服务对象,该对象将保存聊天消息日志(
列表
)。添加的每封邮件都会向列表中添加一个新映射,其索引1大于提交邮件的上一个索引1。如果列表达到一定大小,则删除最低的消息以保持最大大小。(这方面有更好的数据结构,但您可以找到答案)

添加Struts2 JSON插件

创建两个json操作(阅读如何使用Struts2 json插件)。SendMessage和GetMessagesSince操作。还要创建一个基本操作来创建聊天页面(我还将使用conventions插件)

SendMessage将为消息设置一个setter。最好为状态设置一个getter(返回“success”或“failure”)

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

现在进入网页。此时,只需使用短轮询(短中断后在循环中调用)即可获取大于“lastMessage”(从零开始)的消息。使用jQuery magic,您将从GetMessagesSince返回响应(这将启动聊天客户端,如果有历史记录的话),您将使用列表中的最后一条消息来派生GetMessagesSince的新值

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


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

为什么这个问题被标记为struts2?谁知道呢,但这很有趣,而且很多人喜欢聊天客户端,这将是一个很好的教程。只是好奇,你是否用struts2创建了聊天客户端?