|
@@ -84,54 +84,60 @@ public class KfMsgWebsocketHandler implements WebSocketHandler {
|
|
|
*/
|
|
|
@Override
|
|
|
public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
|
|
|
- String msgStr = message.getPayload().toString();
|
|
|
- //消息解析
|
|
|
- KfWebSocketMsgParam param = JsonUtil.toObj(msgStr, KfWebSocketMsgParam.class);
|
|
|
- //消息类型
|
|
|
- KfWebSocketMsgEnum webSocketMsgType = param.getWebSocketMsgType();
|
|
|
- //游戏id
|
|
|
- Long gameId = param.getGameId();
|
|
|
- //参数验证不通过, 直接结束
|
|
|
- if (!this.paramCheck(session, webSocketMsgType, param.getToken(), gameId)) {
|
|
|
- return;
|
|
|
- }
|
|
|
- //处理不同类型的消息
|
|
|
- switch (webSocketMsgType) {
|
|
|
- case WEBSOCKET_MSG_KF_HAND_SHAKE:
|
|
|
- kfHandShake(session, webSocketMsgType);
|
|
|
- break;
|
|
|
- case WEBSOCKET_MSG_KF_CREATE_CONNECT:
|
|
|
- kfCreateConnect(session, webSocketMsgType, gameId);
|
|
|
- break;
|
|
|
- case WEBSOCKET_MSG_USER_CONNECT_JOIN:
|
|
|
- userConnectJoin(session, param);
|
|
|
- break;
|
|
|
- case WEBSOCKET_MSG_ROOM_HISTORY:
|
|
|
- msgRoomHistory(session, param);
|
|
|
- break;
|
|
|
- case WEBSOCKET_MSG_KF_SEND:
|
|
|
- kfSendMsg(session, param);
|
|
|
- break;
|
|
|
- case WEBSOCKET_MSG_FINISH_ROOM_LIST:
|
|
|
- finishRoomList(session, param);
|
|
|
- break;
|
|
|
- case WEBSOCKET_MSG_FINISH_SESSION:
|
|
|
- kfFinishSession(session, webSocketMsgType, gameId, param.getRoomId());
|
|
|
- break;
|
|
|
- case WEBSOCKET_MSG_GET_USER:
|
|
|
- getUser(session, param);
|
|
|
- break;
|
|
|
- case WEBSOCKET_MSG_GET_ROLE_LIST:
|
|
|
- getRoleList(session, param);
|
|
|
- break;
|
|
|
- case WEBSOCKET_MSG_GET_ORDER_LIST:
|
|
|
- getOrderList(session, param);
|
|
|
- break;
|
|
|
- case WEBSOCKET_MSG_QUICK_REPLY:
|
|
|
- quickReply(session, param);
|
|
|
- break;
|
|
|
- default:
|
|
|
- this.sendMessage(session, KfWebSocketMsgDTO.fail(webSocketMsgType, "参数错误, 未知的消息类型"));
|
|
|
+ try {
|
|
|
+ String msgStr = message.getPayload().toString();
|
|
|
+ //消息解析
|
|
|
+ KfWebSocketMsgParam param = JsonUtil.toObj(msgStr, KfWebSocketMsgParam.class);
|
|
|
+ //消息类型
|
|
|
+ KfWebSocketMsgEnum webSocketMsgType = param.getWebSocketMsgType();
|
|
|
+ //游戏id
|
|
|
+ Long gameId = param.getGameId();
|
|
|
+ //参数验证不通过, 直接结束
|
|
|
+ if (!this.paramCheck(session, webSocketMsgType, param.getToken(), gameId)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //处理不同类型的消息
|
|
|
+ switch (webSocketMsgType) {
|
|
|
+ case WEBSOCKET_MSG_KF_HAND_SHAKE:
|
|
|
+ kfHandShake(session, webSocketMsgType);
|
|
|
+ break;
|
|
|
+ case WEBSOCKET_MSG_KF_CREATE_CONNECT:
|
|
|
+ kfCreateConnect(session, webSocketMsgType, gameId);
|
|
|
+ break;
|
|
|
+ case WEBSOCKET_MSG_USER_CONNECT_JOIN:
|
|
|
+ userConnectJoin(session, param);
|
|
|
+ break;
|
|
|
+ case WEBSOCKET_MSG_ROOM_HISTORY:
|
|
|
+ msgRoomHistory(session, param);
|
|
|
+ break;
|
|
|
+ case WEBSOCKET_MSG_KF_SEND:
|
|
|
+ kfSendMsg(session, param);
|
|
|
+ break;
|
|
|
+ case WEBSOCKET_MSG_FINISH_ROOM_LIST:
|
|
|
+ finishRoomList(session, param);
|
|
|
+ break;
|
|
|
+ case WEBSOCKET_MSG_FINISH_SESSION:
|
|
|
+ kfFinishSession(session, webSocketMsgType, gameId, param.getRoomId());
|
|
|
+ break;
|
|
|
+ case WEBSOCKET_MSG_GET_USER:
|
|
|
+ getUser(session, param);
|
|
|
+ break;
|
|
|
+ case WEBSOCKET_MSG_GET_ROLE_LIST:
|
|
|
+ getRoleList(session, param);
|
|
|
+ break;
|
|
|
+ case WEBSOCKET_MSG_GET_ORDER_LIST:
|
|
|
+ getOrderList(session, param);
|
|
|
+ break;
|
|
|
+ case WEBSOCKET_MSG_QUICK_REPLY:
|
|
|
+ quickReply(session, param);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ this.sendMessage(session, KfWebSocketMsgDTO.fail(webSocketMsgType, "参数错误, 未知的消息类型"));
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("Websocket消息处理出现异常, e : {}", e.getMessage());
|
|
|
+ } finally {
|
|
|
+ SecurityUtil.destroy();
|
|
|
}
|
|
|
}
|
|
|
|