/*
* Comet4J Copyright(c) 2011, http://code.google.com/p/comet4j/ This code is
* licensed under BSD license. Use it as you wish, but keep this copyright
* intact.
*/
package org.comet4j.demo.talker;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.comet4j.core.CometContext;
import org.comet4j.core.CometEngine;
import org.comet4j.core.util.JSONUtil;
import org.comet4j.demo.talker.dto.RenameDTO;
import org.comet4j.demo.talker.dto.TalkDTO;
import org.comet4j.demo.talker.dto.UserDTO;
/**
* web交互
* @author jinghai.xiao@gmail.com
* @date 2011-3-3
*/
public class WebServlet extends HttpServlet {
/** serialVersionUID */
private static final long serialVersionUID = -1311176251844328163L;
private static final String CMD_FLAG = "cmd";
private static final String RENAME_CMD = "rename";
private static final String TALK_CMD = "talk";
private static final String LIST_CMD = "list";
private static final CometContext context = CometContext.getInstance();
private static final CometEngine engine = context.getEngine();
private static final AppStore appStore = AppStore.getInstance();
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
String cmd = request.getParameter(CMD_FLAG);
// 改名
if (RENAME_CMD.equals(cmd)) {
String id = request.getParameter("id");
if (id == null) return;
String newName = request.getParameter("newName");
String oldName = request.getParameter("oldName");
appStore.put(id, newName);
RenameDTO dto = new RenameDTO(id, oldName, newName);
engine.sendToAll(Constant.APP_CHANNEL, dto);
return;
}
// 发送信息
if (TALK_CMD.equals(cmd)) {
String id = request.getParameter("id");
String name = appStore.get(id);
String text = request.getParameter("text");
TalkDTO dto = new TalkDTO(id, name, text);
engine.sendToAll(Constant.APP_CHANNEL, dto);
return;
}
// 在线列表
if (LIST_CMD.equals(cmd)) {
List<UserDTO> userList = new ArrayList<UserDTO>();
Map<String, String> map = AppStore.getInstance().getMap();
Iterator<Map.Entry<String, String>> iter = map.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<String, String> entry = iter.next();
String id = entry.getKey();
String name = entry.getValue();
userList.add(new UserDTO(id, name));
}
String json = JSONUtil.convertToJson(userList);
response.getWriter().print(json);
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
javaweb消息推送 基于comet实现局域网内部通讯(聊天室)demo
共47个文件
java:13个
class:13个
js:3个
4星 · 超过85%的资源 需积分: 19 82 下载量 188 浏览量
2013-10-28
13:26:12
上传
评论 11
收藏 3.33MB ZIP 举报
温馨提示
javaweb消息推送 基于comet实现局域网内部通讯(聊天室)demo 功能特性 推送消息广播。 推送定向消息。 提供连接上线前、上线、下线前、下线、发送消息等多种可处理事件。 消息缓存机制,确保长轮询工作模式下不丢失消息。 客户端正常下线,服务端可立即感知。 客户端异常停止工作,服务端可定时检查并感知。 以注册通道应用的方式,让开发者对框架功能进行扩展,实现自己的应用。
资源推荐
资源详情
资源评论
收起资源包目录
cometdemo.zip (47个子文件)
cometdemo
.project 2KB
.mymetadata 300B
src
org
comet4j
demo
talker
AppInit.java 2KB
WebServlet.java 4KB
JoinListener.java 2KB
dto
JoinDTO.java 1KB
UserDTO.java 1KB
RenameDTO.java 2KB
HealthDTO.java 2KB
TalkDTO.java 2KB
LeftDTO.java 1KB
Constant.java 780B
LeftListener.java 1KB
HealthSender.java 2KB
AppStore.java 1KB
WebRoot
WEB-INF
classes
org
comet4j
demo
talker
JoinListener.class 2KB
Constant.class 545B
dto
TalkDTO.class 2KB
HealthDTO.class 2KB
JoinDTO.class 1KB
LeftDTO.class 1KB
UserDTO.class 1KB
RenameDTO.class 2KB
HealthSender.class 2KB
WebServlet.class 4KB
LeftListener.class 2KB
AppInit.class 2KB
AppStore.class 1KB
lib
jira-javamelody-1.26.0.jar 2.61MB
comet4j-tomcat6.jar 106KB
javamelody-1.26.0.jar 889KB
web.xml 4KB
index.html 2KB
index.jsp 834B
js
comet4j.js 20KB
comet4j-debug.js 27KB
talk.js 8KB
META-INF
MANIFEST.MF 36B
css
style.css 1KB
.myeclipse
.settings
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.common.project.facet.core.xml 252B
org.eclipse.jdt.core.prefs 395B
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.core.resources.prefs 182B
org.eclipse.wst.common.component 465B
.jsdtscope 493B
.classpath 529B
共 47 条
- 1
gtumprqq
- 粉丝: 1
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页