我是彗星的新手。
谁能告诉我如何在java中使用comet实现基于网络的聊天(任何网络技术,例如JSP,servlet struts等)..??
非常感谢任何帮助。
谢谢。
我是彗星的新手。
谁能告诉我如何在java中使用comet实现基于网络的聊天(任何网络技术,例如JSP,servlet struts等)..??
非常感谢任何帮助。
谢谢。
使用 maven(Struts2 网站)设置一个基本的 Struts2 应用程序。
添加弹簧插件。
创建一个将保存聊天消息日志的服务对象 ( List<Map<int, String>>
)。添加的每条消息都会向列表中添加一个新地图,其索引比之前提交的消息大 1。如果列表达到一定大小,则删除最低消息以保持最大大小。(有更好的数据结构,但你可以弄清楚)。
添加 Struts2-JSON 插件。
创建两个 json 操作(阅读如何使用 Struts2-JSON-plugin)。SendMessage 和 GetMessagesSince 操作。还要创建一个基本操作来创建聊天页面(我也会使用约定插件)。
SendMessage 将有一个消息设置器。为 Status 设置一个 getter 是个好主意(返回“成功”或“失败”)。
GetMessagesSince 有一个消息获取器,它将返回一个 {int, Strings} 列表。它将有一个用于 lastMessage(int) 的设置器。
现在是网页。此时只需使用短轮询(在短暂休息后循环调用)来获取大于“lastMessage”的消息(将从零开始)。使用 jQuery 魔法,您将从 GetMessagesSince 获得响应(如果有的话,这将启动聊天客户端并带有一点历史记录) 您将使用列表中的最后一条消息来为 GetMessagesSince 派生新值。
现在通过一些并发魔法,您可以实现长轮询。您还可以在消息中添加日期,以便人们知道对话的时间。您还可以通过创建聊天队列的地图来添加不同的消息组,即:Map<String, List<Map<int, String>>>
在这种情况下,我选择了字符串来标识您的聊天室。
如果你是认真的,我什至可以创建一个演示(这比听起来容易)。