首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中使用comet进行基于web的聊天?

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

Stack Overflow用户
提问于 2011-08-19 19:36:37
回答 1查看 1.8K关注 0票数 1

我是第一次接触comet。

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

任何帮助都会得到极大的重视。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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来标识您的聊天室。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7120972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档