我是第一次接触comet。
谁能告诉我如何实现一个基于网络的聊天在java中使用comet (任何网络技术,例如。JSP、servlet struts等) ..??
任何帮助都会得到极大的重视。
谢谢。
发布于 2011-08-20 00:34:56
使用maven (Struts2网站)设置一个基本的Struts2应用程序。
添加spring插件。
创建一个服务对象,它将保存聊天消息日志(List<Map<int, String>>)。添加的每封邮件都会向列表中添加一个新的映射,该映射的索引比之前提交的邮件的索引大1。如果列表达到某个大小,则删除最小的消息以保持最大大小。(有更好的数据结构可以解决这个问题,但你可以弄清楚)。
添加Struts2-JSON-plugin。
创建两个json操作(阅读如何使用Struts2-JSON-plugin)。SendMessage和GetMessagesSince操作。还要创建一个基本操作来创建聊天页面(我也会使用约定插件)。
SendMessage将有一个消息设置器。最好有一个状态的getter (返回“成功”或“失败”)。
GetMessagesSince有一个消息的getter方法,它将返回{int,String}的列表。它将有一个lastMessage(int)的设置器。
现在到WebPage了。此时,只需使用短轮询(在短中断后循环调用)来获取大于'lastMessage‘(将从零开始)的消息。使用jQuery魔术,您将获得来自GetMessagesSince的响应(如果有历史记录,它将启动聊天客户端)您将使用列表中的最后一条消息来派生GetMessagesSince的新值。
现在,使用一些并发魔术,您可以实现长轮询。您还可以在消息中添加日期,这样人们就可以知道对话的时间。您还可以通过创建聊天队列的地图来添加不同的消息组,例如:Map<String, List<Map<int, String>>>,在本例中我选择了string来标识您的聊天室。
如果你是认真的,我甚至可以创建一个演示(这比听起来容易)。
https://stackoverflow.com/questions/7120972
复制相似问题