2024-07-03 16:11:21 +08:00

83 lines
1.9 KiB
Java

package com.zhgd.xmgl.config;
import cn.hutool.core.text.CharSequenceUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.websocket.*;
import java.util.HashMap;
import java.util.Map;
/**
* @Description:
* @Author: feicongcong
* @Date: 2022/7/19
* @Version: V1.0
*/
@ClientEndpoint
@Slf4j
@Component
public class RundeWSClient {
private Session session;
private String id;
private final Map<String, String> rundeUserMap = new HashMap<>(16);
@OnOpen
public void open(Session session) {
log.info("客户端:" + id + ",连接服务端...");
this.session = session;
}
@OnMessage
public void onMessage(String message) {
if (CharSequenceUtil.isNotBlank(message)) {
log.info("报文:" + message);
JSONObject rundeResult = JSON.parseObject(message);
JSONObject adminInfo = rundeResult.getJSONObject("admin_info");
if (adminInfo != null) {
rundeUserMap.put(adminInfo.getString("user_name"), adminInfo.getString("admin_id"));
}
}
}
@OnClose
public void onClose() {
log.info("客户端:" + id + ",服务端服务端断开连接");
}
/**
* @param session
* @param e
*/
@OnError
public void onError(Session session, Throwable e) {
log.error("连接服务端错误:" + this.id, e);
}
/**
* 发送客户端消息到服务端
*
* @param message 消息内容
*/
public void send(String message) {
this.session.getAsyncRemote().sendText(message);
}
public RundeWSClient(String id) {
this.id = id;
}
public RundeWSClient() {
}
public Map<String, String> getRundeUserMap() {
return rundeUserMap;
}
}