feat: add original packet name field on base packet
This commit is contained in:
parent
332763a579
commit
bbd7e7ba68
@ -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");
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user