package server;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import com.google.gson.Gson;
import vo.Message;
@ServerEndpoint("/chatSocket")
public class ChatSocket {
private static Set<ChatSocket> sockets=new HashSet<ChatSocket>();
private static List<String> names=new ArrayList<String>();
private Session session;
private String username;
private Gson gson=new Gson();
@OnOpen
public void open(Session session) throws Exception{
this.session=session;
sockets.add(this);
String queryString = session.getQueryString();
System.out.println(queryString);
this.username = queryString.substring(queryString.indexOf("=")+1);
names.add(this.username);
Message message=new Message();
message.setAlert(this.username+"进来了");
message.setNames(names);
broadcast(sockets, gson.toJson(message) );
}
@SuppressWarnings("deprecation")
@OnMessage
public void receive(Session session,String msg ){
Message message=new Message();
message.setSendMsg(msg);
message.setFrom(this.username);
message.setDate(new Date().toLocaleString());
broadcast(sockets, gson.toJson(message));
}
@OnClose
public void close(Session session){
sockets.remove(this);
names.remove(this.username);
Message message=new Message();
message.setAlert(this.username+"出了");
message.setNames(names);
broadcast(sockets, gson.toJson(message));
}
@SuppressWarnings("rawtypes")
public void broadcast(Set<ChatSocket> ss ,String msg ){
for (Iterator iterator = ss.iterator(); iterator.hasNext();) {
ChatSocket chatSocket = (ChatSocket) iterator.next();
try {
chatSocket.session.getBasicRemote().sendText(msg);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
![avatar](https://profile-avatar.csdnimg.cn/d866fc56164c4e48983b239efa9433bb_yjaspire.jpg!1)
yjaspire
- 粉丝: 55
- 资源: 24
最新资源
- Simulink仿真下的四有源桥电路解耦控制:模型预测控制方法与多种工作模式切换,高精度动态响应及理论推导文件,Simulink仿真实现四有源桥电路解耦控制:模型预测控制下的多模式输出控制,高精度动态
- 基于TypeScript实现的宝霆公共应用API设计源码
- 基于Vue框架的人力资源管理项目Vue2-ihrm设计源码
- PLL锁相环与CMOS模拟集成电路设计教程:初学者快速上手指南,涵盖Verilog模型、Testbench电路与仿真设计文档,初学者必备的PLL锁相环与CMOS模拟集成电路设计资料:涵盖Verilog
- Comsol相场模拟:锂枝晶多核生长的各向异性与温度场效应,Comsol相场模拟:锂枝晶多核生长的各向异性与温度场效应,comsol相场枝晶生长模拟,comsol 锂枝晶生长过程中施加温度场,锂枝晶生
- 基于阿里云SDK与ThinkPHP6的域名分发系统设计源码
- Abaqus静动力学仿真与风振响应分析:光伏支架模态及脉动风模拟研究,Abaqus静动力学仿真与风振响应分析:光伏支架模态及风致振动研究,abaqus静力学动力学仿真分析,风振响应分析,脉动风模拟,光
- 基于Kotlin语言的KotlinFitnessServer运动器械从机服务端设计源码
- 基于COMSOL的锂枝晶生长模型:融合电势场、浓度场与流场,探究电压模式对枝晶形貌的影响,Comsol多场耦合下锂枝晶生长模拟:电势、浓度与流场影响形貌及随机形核研究,comsol 锂枝晶加流动耦合电
- 基于元胞自动机与相场模型的枝晶生长模拟:考虑对流、多物理场与溶质富集的分析研究,利用元胞自动机与LBM模拟枝晶生长:角度自由、物理场多元融合,观察枝晶生长细节与溶质富集动态,C++程序,基于元胞自动机
- 永磁同步电机矢量控制C代码详解:涵盖FOC控制算法、弱磁、母线电流估算及SVPWM技术等多功能实现,永磁同步电机矢量控制C代码详解:涵盖FOC控制算法、弱磁、母线电流估算及SVPWM等技术 这是一个涵
- 基于Vue框架的family_education家教项目设计源码
- 基于Vue2+ElementUI+VueCli的当当书城前端项目设计源码
- 基于Html和Java的桃园中学维修工单与打卡系统设计源码
- 四轮转向汽车Carsim与Simulink联合仿真滑模控制模型详解:涵盖驾驶员模型、二自由度车辆模型、文献及技术支持,四轮转向汽车Carsim与Simulink联合仿真滑模控制模型研究(含文献文档及全
- Simulink模型库:全面解析各类电机模型的应用与搭建方法,基于Simulink技术的多类型电机模型构建与应用,Simulink搭建的各种电机模型 ,电机模型; Simulink; 搭建; 模型模拟
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)