package com.websocket;
//import org.java_websocket.WebSocketImpl; //main方法中使用
import org.java_websocket.handshake.ClientHandshake;
import org.java_websocket.server.WebSocketServer;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;
public class WebSocket extends WebSocketServer{
int j=0;
int h=0;
int e=0;
int l=0;
public WebSocket(InetSocketAddress address) {
super(address);
System.out.println("地址" + address);
}
public WebSocket(int port) throws UnknownHostException {
super(new InetSocketAddress(port));
System.out.println("端口" + port);
}
/**
* 触发连接事件
* @param conn
* @param handshake
*/
@Override
public void onOpen(org.java_websocket.WebSocket conn, ClientHandshake handshake) {
System.out.println("有人连接Socket conn:" + conn);
l++;
}
/**
* 触发关闭事件
* @param conn
* @param message
* @param reason
* @param remote
*/
@Override
public void onClose(org.java_websocket.WebSocket conn, int message, String reason, boolean remote) {
userLeave(conn);
}
/**
* 客户端发送消息到服务器是触发事件
* @param conn
* @param message
*/
@Override
public void onMessage(org.java_websocket.WebSocket conn, String message) {
if(message != null) {
//将用户加入
this.userJoin(message, conn);
}
}
/**
* 触发异常事件
* @param conn
* @param message
*/
@Override
public void onError(org.java_websocket.WebSocket conn, Exception message) {
System.out.println("Socket异常:" + message.toString());
e++;
}
/**
* 用户下线处理
* @param conn
*/
public void userLeave(org.java_websocket.WebSocket conn) {
String user = WebSocketPool.getUserByKey(conn);
boolean b = WebSocketPool.removeUser(conn); // 在连接池中移除连接
if (b) {
WebSocketPool.sendMessage(user); // 把当前用户从所有在线用户列表中删除
String leaveMsg = "[系统]" + user + "下线了";
WebSocketPool.sendMessage(leaveMsg); // 向在线用户发送当前用户退出的信息
}
}
public void userJoin(String user, org.java_websocket.WebSocket conn) {
WebSocketPool.sendMessage(user); // 把当前用户加入到所有在线用户列表中
String joinMsg = "[系统]" + user + "上线了!";
WebSocketPool.sendMessage(joinMsg); // 向所有在线用户推送当前用户上线的消息
WebSocketPool.addUser(user, conn); // 向连接池添加当前的连接的对象
WebSocketPool.sendMessageToUser(conn, WebSocketPool.getOnlineUser().toString());
// 向当前连接发送当前在线用户的列表
}
public static void main(String[] args) throws InterruptedException{
// System.out.println("开始启动webSocket");
// WebSocketImpl.DEBUG = false;
// int port = 8080; // 端口随便设置,只要不跟现有端口重复就可以了
// WebSocket s =null;
// try {
// s = new WebSocket(port);
// s.start();
// } catch (UnknownHostException e1) {
// System.out.println("启动webSocket失败!");
// e1.printStackTrace();
// }
// System.out.println("启动webSocket成功!");
}
}
y_hai_yang
- 粉丝: 16
- 资源: 3
最新资源
- C语言中使用OpenGL和SDL实现3D动态圣诞树效果
- 保险费用数据集.zip
- python圣诞树代码动态3d
- Anaconda Python 数据处理与分析工具的安装与配置教程
- C语言编程实现控制台打印2D圣诞树
- 动态直方图均衡化技术在图像对比度增强中的应用研究-论文复现-含代码详细解释
- 电脑视觉检测机项目设备3D图纸和工程图机械结构设计图纸和其它技术资料和技术方案非常好100%好用.zip
- DataOptionError解决办法.md
- 使用HTML和CSS创建静态圣诞树的代码实例
- NSConditionLockException如何解决.md
- KeyError.md
- 大宗商品价格数据集.zip
- 全球互联网使用数据集,互联网使用影响因素数据集,提供了各国互联网使用的全面概览
- ConcurrentModificationException(解决方案).md
- ReferenceError.md
- python通过overpass获取城市所有建筑物经纬度
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
前往页