首页 > 解决方案 > 如何使用springboot解决聊天框“消息处理方法未处理异常”的问题

问题描述

我正在尝试在 java 中使用 springboot+thymeleaf 构建聊天框。从 UI 向控制器发送调用时出错。每当我输入用户名并单击发送时,都会出现错误提示Unhandled exception from message handler method。我已经从网上下载了聊天框代码,并将代码与我现有的项目整合在一起。如果我独立运行项目,它工作得很好,但如果我与我的项目集成,它会给我错误。

我的 .js 具有以下调用 chat.addUser 的方法。

主.js

function onConnected() {

        stompClient.subscribe('/topic/publicChatRoom', onMessageReceived); // Subscribe to the Public Topic

        // Tell your username to the server
        stompClient.send("/app/chat.addUser",
            {},
            JSON.stringify({sender: username, type: 'JOIN'})
        )

        connectingElement.classList.add('hidden');
    }

我的 WebSocketChatController 看起来像这样

WebSocketController.java

    @MessageMapping("/chat.addUser")
    @SendTo("/topic/publicChatRoom")
    public ChatMessage addUser(@Payload ChatMessage chatMessage,SimpMessageHeaderAccessor headerAccessor) {
        // Add username in web socket session
        System.out.println("In addUser");
        headerAccessor.getSessionAttributes().put("username",chatMessage.getSender());
        return chatMessage;
    }

在这个控制器中,我无法调用("/chat.addUser")。当我输入用户名时,我的输出是这样的。

输出:

    2019-05-30 17:11:50,228  [34mINFO [0;39m [-8081-exec-6] [36mcom.bmc.app.config.WebLogAspect         [0;39m : RESPONSE : chat 
    2019-05-30 17:11:50,228  [34mINFO [0;39m [-8081-exec-6] [36mcom.bmc.app.config.WebLogAspect         [0;39m : SPEND TIME : 1 
    2019-05-30 17:11:50,228  [34mINFO [0;39m [-8081-exec-6] [36mcom.bmc.app.config.WebLogAspect    [0;39m :
    2019-05-30 17:12:11,853  [34mINFO [0;39m [-8081-exec-2] [36mc.b.a.listener.HttpHandshakeInterceptor [0;39m : Call beforeHandshake 
    2019-05-30 17:12:11,855  [34mINFO [0;39m [-8081-exec-2] [36mc.b.a.listener.HttpHandshakeInterceptor [0;39m : Call afterHandshake 
    2019-05-30 17:12:11,863  [34mINFO [0;39m [undChannel-7] [36mc.b.a.config.WebSocketChatEventListener [0;39m : Received a new web socket connection 
    2019-05-30 17:12:14,899  [1;31mERROR[0;39m [ndChannel-23] [36m.WebSocketAnnotationMethodMessageHandler[0;39m : Unhandled exception from message handler method 
    java.lang.NullPointerException: null
        at com.bmc.app.config.WebLogAspect.doBefore(WebLogAspect.java:33) ~[classes/:na]
        at jdk.internal.reflect.GeneratedMethodAccessor238.invoke(Unknown Source) ~[na:na]

标签: javascriptspring-bootthymeleafspring-websocket

解决方案


推荐阅读