我正在使用 spring 的官方示例(问候语示例),位于:

http://spring.io/guides/gs/messaging-stomp-websocket/

一切似乎都工作得很好,当我按下连接时,我可以看到正在建立与服务器的连接。

但是,连接后,当我向服务器提交“名称”时,我没有收到错误,也没有请求到达 GreetingController。

我尝试将日志级别置于跟踪上,当我执行“发送”时,我看到以下几行:

22 Ar 2014 17:10:52 DEBUG DispatcherServlet - Successfully completed request 
22 Apr 2014 17:10:52 DEBUG ExceptionTranslationFilter - Chain processed normally 
22 Apr 2014 17:10:52 DEBUG HttpSessionSecurityContextRepository - SecurityContext is empty or contents are anonymous - context will not be stored in HttpSession. 
22 Apr 2014 17:10:52 DEBUG SecurityContextPersistenceFilter - SecurityContextHolder now cleared, as request processing completed 
22 Apr 2014 17:10:52 DEBUG LoggingWebSocketHandlerDecorator - Connection established, SockJS session id=taxwn2fu, uri=/MyWebApp/hello/535/taxwn2fu/websocket 
22 Apr 2014 17:10:52 DEBUG SubProtocolWebSocketHandler - Started WebSocket session=taxwn2fu, number  of sessions=1 
22 Apr 2014 17:10:53 DEBUG StompDecoder - Decoded [Payload byte[0]][Headers={stompCommand=CONNECT, nativeHeaders={heart-beat=[10000,10000], accept-version=[1.1,1.0]}, simpMessageType=CONNECT,  id=0686dda9-afa3-7a54-756c-89279ea33126, timestamp=1398175853000}] 
22 Apr 2014 17:10:53 DEBUG StompEncoder - Encoded STOMP command=CONNECTED headers={heart-beat=[0,0], version=[1.1]} 
22 Apr 2014 17:10:53 DEBUG StompDecoder - Decoded [Payload byte[0]][Headers={stompCommand=SUBSCRIBE, nativeHeaders={id=[sub-0], destination=[/topic/greetings]}, simpMessageType=SUBSCRIBE, simpSubscriptionId=sub-0, simpDestination=/topic/greetings, id=653538d3-0722-0325-2c23-8314abd70cc0, timestamp=1398175853008}] 
22 Apr 2014 17:10:53 DEBUG DefaultSubscriptionRegistry - Adding subscription id=sub-0, destination=/topic/greetings 
22 Apr 2014 17:10:56 DEBUG StompDecoder - Decoded [Payload byte[17]][Headers={stompCommand=SEND, nativeHeaders={content-length=[17], destination=[/app/hello]}, simpMessageType=MESSAGE, simpDestination=/app/hello, id=f9a608c0-6e02-7828-a057-a6b2b07b6af7, timestamp=1398175856489}] 
22 Apr 2014 17:10:56 DEBUG SimpAnnotationMethodMessageHandler - Handling message, lookupDestination=/hello 

有什么想法吗?

P.S,这是我使用的js代码部分(与网站相同):

    function connect() { 
        var socket = new SockJS('/MyWebApp/hello'); 
        stompClient = Stomp.over(socket); 
        stompClient.connect({}, function(frame) { 
            setConnected(true); 
            console.log('Connected: ' + frame); 
            stompClient.subscribe('/topic/greetings', function(greeting){ 
                showGreeting(JSON.parse(greeting.body).content); 
            }); 
        }); 
    } 
 
    function disconnect() { 
        stompClient.disconnect(); 
        setConnected(false); 
        console.log("Disconnected"); 
    } 
 
    function sendName() { 
        debugger; 
        var name = document.getElementById('name').value; 
        stompClient.send("/app/hello", {}, JSON.stringify({ 'name': name })); 
    } 

请您参考如下方法:

嗯,服务器正在捕获消息,但它没有对此执行任何操作。因此,我认为您应该:

  1. 注意这一行“config.setApplicationDestinationPrefixes("/app");”在 WebSocketConfig 类上;
  2. 确保您的 Controller 使用 @Controller 进行注释,方法使用 @MessageMapping("/hello");


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!