资源简介
java即时聊天,基于websocket网页多用户在线群聊
http://blog.csdn.net/qq_23994787/article/details/77601434
代码片段和文件信息
package com.jsx.chat;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CopyOnWriteArraySet;
import javax.websocket.OnClose;
import javax.websocket.onerror;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import net.sf.json.JSONobject;
/**
* 聊天服务器
* @author 落尘曦 2017.8.25
* @version v1.0
*/
@ServerEndpoint(“/websocket/{userId}“)
public class ChatServer {
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat(“yyyy-MM-dd HH:mm“); // 日期格式化
//静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。
private static int onlineCount = 0;
//concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。若要实现服务端与单一客户端通信的话,可以使用Map来存放,其中Key可以为用户标识
private static CopyOnWriteArraySet webSocketSet = new CopyOnWriteArraySet();
//与某个客户端的连接会话,需要通过它来给客户端发送数据
private Session session;
private String userId;
//----------单聊---------用户id和websocket的session绑定的路由表
//@SuppressWarnings(“rawtypes“)
//private static Map routeTable = new HashMap<>();
/**
* 连接建立成功调用的方法
* @param session 可选的参数。session为与某个客户端的连接会话,需要通过它来给客户端发送数据
*/
@OnOpen
public void open(@PathParam(“userId“)String userIdsSession session) {
// 添加初始化操作
System.out.println(“---初始化----userId:“+userIds);
this.session = session;
//获取当前登录用户的id
this.userId = userIds;
webSocketSet.add(this); //加入set中
addOnlineCount(); //在线数加1
System.out.println(“有新连接加入!当前在线人数为“ + getOnlineCount());
//---------单聊-----------将用户id和session绑定到路由表
//绑定之后就可以在其它地方根据id来获取session,这时两个用户私聊就可以实现了
//routeTable.put(userId session);
}
/**
* 接受客户端的消息,并把消息发送给所有连接的会话
* @param message 客户端发来的消息
* @param session 客户端的会话
*/
@OnMessage
public void getMessage(String message Session session1) {
// 把客户端的消息解析为JSON对象
JSONobject jsonobject = JSONobject.fromobject(message);
// 在消息中添加发送日期
jsonobject.put(“date“ DATE_FORMAT.format(new Date()));
// -----------------------把消息发送给所有连接的会话--------------------------------
System.out.println(“来自客户端的消息“+this.userId+“:“ + message);
for(ChatServer item: webSocketSet){
try {
//当前用户右侧显示,非本用户左侧显示
if(this.userId.equals(item.userId)){jsonobject.put(“isSelf“ true);}
else{jsonobject.put(“isSelf“ false);}
// 发送JSON格式的消息
item.sendMessage(jsonobject.toString());
} catch (IOException e) {
e.printStackTrace();
continue;
}
}
//--------------群发2-------------------
// for (Session sess : session.getOpenSessions()) {
// if (sess.isOpen())
// sess.getBasicRemote().sendText(msg);
// }
}
@OnClose
public void close() {
// 添加关闭会话时的操作
webSocketSet.remove(this); //从set中删除
subO
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-08-26 15:17 Chat\
文件 1097 2017-08-25 00:40 Chat\.classpath
目录 0 2017-08-26 15:17 Chat\.externalToolBuilders\
文件 548 2017-08-24 23:48 Chat\.externalToolBuilders\org.eclipse.wst.jsdt.core.ja
文件 1364 2017-08-24 23:56 Chat\.project
目录 0 2017-08-26 15:17 Chat\.settings\
文件 491 2014-12-29 18:26 Chat\.settings\.jsdtscope
文件 83 2017-08-24 23:49 Chat\.settings\com.genuitec.eclipse.core.prefs
文件 76 2017-08-24 23:48 Chat\.settings\com.genuitec.eclipse.migration.prefs
文件 357 2014-12-29 18:26 Chat\.settings\org.eclipse.jdt.core.prefs
文件 456 2014-12-29 18:26 Chat\.settings\org.eclipse.wst.common.component
文件 345 2017-08-24 23:48 Chat\.settings\org.eclipse.wst.common.project.facet.core.xm
文件 49 2014-12-29 18:26 Chat\.settings\org.eclipse.wst.jsdt.ui.superType.container
文件 6 2014-12-29 18:26 Chat\.settings\org.eclipse.wst.jsdt.ui.superType.name
目录 0 2017-08-26 15:17 Chat\WebContent\
目录 0 2017-08-26 15:17 Chat\WebContent\me
文件 36 2014-12-29 18:26 Chat\WebContent\me
目录 0 2017-08-26 15:17 Chat\WebContent\WEB-INF\
目录 0 2017-08-26 15:17 Chat\WebContent\WEB-INF\lib\
文件 231320 2014-12-29 18:26 Chat\WebContent\WEB-INF\lib\commons-beanutils-1.8.0.jar
文件 575389 2014-12-29 18:26 Chat\WebContent\WEB-INF\lib\commons-collections-3.2.1.jar
文件 279193 2014-12-29 18:26 Chat\WebContent\WEB-INF\lib\commons-lang-2.5.jar
文件 60841 2014-12-29 18:26 Chat\WebContent\WEB-INF\lib\commons-logging-1.1.1.jar
文件 86487 2014-12-29 18:26 Chat\WebContent\WEB-INF\lib\ezmorph-1.0.6.jar
文件 159123 2014-12-29 18:26 Chat\WebContent\WEB-INF\lib\json-lib-2.4-jdk15.jar
文件 36575 2017-08-24 23:55 Chat\WebContent\WEB-INF\lib\websocket-api.jar
目录 0 2017-08-26 15:17 Chat\WebContent\assets\
目录 0 2017-08-26 15:17 Chat\WebContent\assets\css\
文件 3049 2014-12-29 18:26 Chat\WebContent\assets\css\admin.css
文件 304221 2014-12-29 18:26 Chat\WebContent\assets\css\amazeui.css
文件 305083 2014-12-29 18:26 Chat\WebContent\assets\css\amazeui.flat.css
............此处省略163个文件信息
相关资源
- 基于Tomcat7、Java、Ext、WebSocket的聊天室
- java socket即时聊天工具 可发文件 实现
- Java 高仿QQ聊天即时通软件+mysql数据库
- Android 开发即时聊天工具 YQ 1.3
- Android即时通讯--仿QQ即时聊天源码含服
- 环信即时聊天与java后台接口对接dem
- Android即时聊天app端 AS项目源码
- 即时聊天java代码
- Android环信即时聊天集成EaseUI的依赖库
- JAVA即时聊天程序源码
- java实现的P2P即时聊天程序
- java实现的P2P即时聊天程序源码+文档
- Java课程设计微仿QQ即时聊天系统
- Java即时聊天系统毕业论文
- 融云java即时聊天
- android 仿微信即时聊天 XMPP
- 高仿环信 即时聊天源码凡信(原理
- android 即时聊天demo(jmessage)
评论
共有 条评论