Delete VXESocket.java

pull/3621/head
JEECG 3 years ago committed by GitHub
parent 56912b766d
commit 2d9de317c4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,217 +0,0 @@
package org.jeecg.modules.demo.mock.vxe.websocket;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.constant.VxeSocketConst;
import org.springframework.stereotype.Component;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
/**
* vxe WebSocket
* @author: jeecg-boot
*/
@Slf4j
@Component
@ServerEndpoint("/vxeSocket/{userId}/{pageId}")
public class VxeSocket {
/**
* session
*/
private Session session;
/**
* id
*/
private String userId;
/**
* id
*/
private String pageId;
/**
* socketid
*/
private String socketId;
/**
* socket
*
* keyuserIdvalueMapMapkeypageIdvalueVXESocket
*/
private static Map<String, Map<String, VxeSocket>> userPool = new HashMap<>();
/**
* WebSocket
* keysocketIdvalueVXESocket
*/
private static Map<String, VxeSocket> socketPool = new HashMap<>();
/**
*
*/
public static Map<String, VxeSocket> getUserPool(String userId) {
return userPool.computeIfAbsent(userId, k -> new HashMap<>(5));
}
/**
*
*
* @param message
*/
public void sendMessage(String message) {
try {
this.session.getAsyncRemote().sendText(message);
} catch (Exception e) {
log.error("【vxeSocket】消息发送失败" + e.getMessage());
}
}
/**
* json
*
* @param data
*/
public static String packageMessage(String type, Object data) {
JSONObject message = new JSONObject();
message.put(VxeSocketConst.TYPE, type);
message.put(VxeSocketConst.DATA, data);
return message.toJSONString();
}
/**
*
*
* @param userId ID
* @param message
*/
public static void sendMessageTo(String userId, String message) {
Collection<VxeSocket> values = getUserPool(userId).values();
if (values.size() > 0) {
for (VxeSocket socketItem : values) {
socketItem.sendMessage(message);
}
} else {
log.warn("【vxeSocket】消息发送失败userId\"" + userId + "\"不存在或未在线!");
}
}
/**
*
*
* @param userId ID
* @param message
*/
public static void sendMessageTo(String userId, String pageId, String message) {
VxeSocket socketItem = getUserPool(userId).get(pageId);
if (socketItem != null) {
socketItem.sendMessage(message);
} else {
log.warn("【vxeSocket】消息发送失败userId\"" + userId + "\"的pageId\"" + pageId + "\"不存在或未在线!");
}
}
/**
*
*
* @param userIds ID
* @param message
*/
public static void sendMessageTo(String[] userIds, String message) {
for (String userId : userIds) {
VxeSocket.sendMessageTo(userId, message);
}
}
/**
*
*
* @param message
*/
public static void sendMessageToAll(String message) {
for (VxeSocket socketItem : socketPool.values()) {
socketItem.sendMessage(message);
}
}
/**
* websocket
*/
@OnOpen
public void onOpen(Session session, @PathParam("userId") String userId, @PathParam("pageId") String pageId) {
try {
this.userId = userId;
this.pageId = pageId;
this.socketId = userId + pageId;
this.session = session;
socketPool.put(this.socketId, this);
getUserPool(userId).put(this.pageId, this);
log.info("【vxeSocket】有新的连接总数为:" + socketPool.size());
} catch (Exception ignored) {
}
}
/**
* websocket
*/
@OnClose
public void onClose() {
try {
socketPool.remove(this.socketId);
getUserPool(this.userId).remove(this.pageId);
log.info("【vxeSocket】连接断开总数为:" + socketPool.size());
} catch (Exception ignored) {
}
}
/**
* websocket
*/
@OnMessage
public void onMessage(String message) {
// log.info("【vxeSocket】onMessage:" + message);
JSONObject json;
try {
json = JSON.parseObject(message);
} catch (Exception e) {
log.warn("【vxeSocket】收到不合法的消息:" + message);
return;
}
String type = json.getString(VxeSocketConst.TYPE);
switch (type) {
// 心跳检测
case VxeSocketConst.TYPE_HB:
this.sendMessage(VxeSocket.packageMessage(type, true));
break;
// 更新form数据
case VxeSocketConst.TYPE_UVT:
this.handleUpdateForm(json);
break;
default:
log.warn("【vxeSocket】收到不识别的消息类型:" + type);
break;
}
}
/**
* UpdateForm
*/
private void handleUpdateForm(JSONObject json) {
// 将事件转发给所有人
JSONObject data = json.getJSONObject(VxeSocketConst.DATA);
VxeSocket.sendMessageToAll(VxeSocket.packageMessage(VxeSocketConst.TYPE_UVT, data));
}
}
Loading…
Cancel
Save