feat: 主机消息处理器.
This commit is contained in:
@@ -13,6 +13,8 @@ public interface ExtraFieldConst extends FieldConst {
|
||||
|
||||
String TRACE_ID = "traceId";
|
||||
|
||||
String IDENTITY = "identity";
|
||||
|
||||
String GROUP_NAME = "groupName";
|
||||
|
||||
String ID_LIST = "idList";
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.orion.ops.framework.common.utils;
|
||||
|
||||
import com.orion.ops.framework.common.entity.RequestIdentity;
|
||||
import com.orion.ops.framework.common.entity.RequestIdentityModel;
|
||||
import com.orion.web.servlet.web.Servlets;
|
||||
import org.springframework.web.context.request.RequestContextHolder;
|
||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||
@@ -19,6 +20,17 @@ public class Requests {
|
||||
private Requests() {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取请求留痕信息
|
||||
*
|
||||
* @return model
|
||||
*/
|
||||
public static RequestIdentityModel getIdentity() {
|
||||
RequestIdentityModel model = new RequestIdentityModel();
|
||||
fillIdentity(model);
|
||||
return model;
|
||||
}
|
||||
|
||||
/**
|
||||
* 填充请求留痕信息
|
||||
*
|
||||
|
||||
@@ -2,16 +2,20 @@ package com.orion.ops.framework.websocket.core.constant;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.socket.CloseStatus;
|
||||
import org.springframework.web.socket.WebSocketSession;
|
||||
|
||||
/**
|
||||
* ws服务端关闭code
|
||||
* ws 服务端关闭 code
|
||||
*
|
||||
* @author Jiahang Li
|
||||
* @version 1.0.0
|
||||
* @since 2021/6/16 15:18
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Slf4j
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum WsCloseCode {
|
||||
|
||||
/**
|
||||
@@ -125,6 +129,22 @@ public enum WsCloseCode {
|
||||
|
||||
private final String reason;
|
||||
|
||||
/**
|
||||
* 关闭会话
|
||||
*
|
||||
* @param session session
|
||||
*/
|
||||
public void close(WebSocketSession session) {
|
||||
if (!session.isOpen()) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
session.close(new CloseStatus(code, reason));
|
||||
} catch (Exception e) {
|
||||
log.error("websocket close failure", e);
|
||||
}
|
||||
}
|
||||
|
||||
public static WsCloseCode of(int code) {
|
||||
for (WsCloseCode value : values()) {
|
||||
if (value.code == code) {
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
package com.orion.ops.framework.websocket.core.handler;
|
||||
|
||||
import org.springframework.web.socket.*;
|
||||
|
||||
/**
|
||||
* 文本类型消息处理器
|
||||
*
|
||||
* @author Jiahang Li
|
||||
* @version 1.0.0
|
||||
* @since 2023/12/29 18:23
|
||||
*/
|
||||
public abstract class TextWebSocketHandler implements WebSocketHandler {
|
||||
|
||||
@Override
|
||||
public void afterConnectionEstablished(WebSocketSession session) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) {
|
||||
// 非 text message 不处理
|
||||
if (!(message instanceof TextMessage)) {
|
||||
return;
|
||||
}
|
||||
// 处理消息
|
||||
this.onMessage(session, (String) message.getPayload());
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理消息
|
||||
*
|
||||
* @param session session
|
||||
* @param payload payload
|
||||
*/
|
||||
public abstract void onMessage(WebSocketSession session, String payload);
|
||||
|
||||
@Override
|
||||
public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsPartialMessages() {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user