feat: add original packet name field on base packet

This commit is contained in:
Wzp-2008 2024-12-15 23:15:16 +08:00
parent 332763a579
commit bbd7e7ba68
3 changed files with 25 additions and 4 deletions

View File

@ -72,9 +72,13 @@ public class ChessController {
public void onMessage(String message, Session session) {
try {
JSONObject jsonObject = JSON.parseObject(message);
Object response = handleMessage(jsonObject, session);
String packetName = jsonObject.getString("name");
if (packetName == null) {
WebSocketUtils.sendPacket(new ErrorPacket("包内缺少name字段"), session);
}
Object response = handleMessage(jsonObject, packetName, session);
if (response != null) {
WebSocketUtils.sendPacket(response, session);
WebSocketUtils.sendPacket(response, packetName, session);
}
} catch (JSONException e) {
WebSocketUtils.sendPacket(new ErrorPacket("JSON格式错误"), session);
@ -83,8 +87,7 @@ public class ChessController {
}
@Nullable
public Object handleMessage(JSONObject object, Session session) {
String packetName = object.getString("name");
public Object handleMessage(JSONObject object, String packetName, Session session) {
if (packetName == null) return new ErrorPacket("错误的请求类型");
try {
Class<?> packetType = Class.forName("org.mmga.clubs.entities.chess.packet.request." + packetName + "Request");

View File

@ -1,11 +1,15 @@
package org.mmga.clubs.entities.chess.packet;
import jakarta.annotation.Nullable;
import lombok.Data;
import lombok.NonNull;
@Data
public class BaseWebSocketPacket {
private String name;
private Object payload;
@Nullable
private String originalPacketName;
public BaseWebSocketPacket(Object payload) {
Class<?> aClass = payload.getClass();
@ -13,7 +17,16 @@ public class BaseWebSocketPacket {
this.payload = payload;
}
public BaseWebSocketPacket(Object payload, @NonNull String originalPacketName) {
this(payload);
this.originalPacketName = originalPacketName;
}
public static BaseWebSocketPacket of(Object payload) {
return new BaseWebSocketPacket(payload);
}
public static BaseWebSocketPacket of(Object packet, @NonNull String originalPacketName) {
return new BaseWebSocketPacket(packet, originalPacketName);
}
}

View File

@ -12,6 +12,7 @@ public class WebSocketUtils {
public static void sendJsonMessage(@NonNull JSONObject message, @NonNull Session session) {
session.getAsyncRemote().sendText(message.toJSONString());
}
public static void sendMessage(@NonNull Object object, @NonNull Session session) {
sendJsonMessage(JSONObject.from(object), session);
}
@ -20,6 +21,10 @@ public class WebSocketUtils {
sendMessage(BaseWebSocketPacket.of(packet), session);
}
public static void sendPacket(@NonNull Object packet, String originalPacketName, @NonNull Session session) {
sendMessage(BaseWebSocketPacket.of(packet, originalPacketName), session);
}
public static void sendPacketIfPossible(@NonNull Object packet, @Nullable Session session) {
if (Objects.isNull(session)) return;
sendPacket(packet, session);