feat: 主机消息处理器.

This commit is contained in:
lijiahang
2023-12-29 19:15:11 +08:00
parent e580fcee87
commit 6ff8ca2526
16 changed files with 483 additions and 73 deletions

View File

@@ -13,6 +13,8 @@ public interface ExtraFieldConst extends FieldConst {
String TRACE_ID = "traceId";
String IDENTITY = "identity";
String GROUP_NAME = "groupName";
String ID_LIST = "idList";

View File

@@ -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;
}
/**
* 填充请求留痕信息
*

View File

@@ -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) {

View File

@@ -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;
}
}