诊断Spring WebSocket用户目标的问题

时间:2015-01-21 10:57:51

标签: java spring spring-boot stomp spring-websocket

我无法让用户目的地使用Spring STOMP websockets。

我似乎有一般的配置工作。例如,以下工作。

客户端:

svc.stompClient.subscribe('/queue/messages', msg );

服务器:

stompTemplate.convertAndSend("/queue/messages", msg);

但是,当我尝试按如下方式发送到特定用户目的地时:

客户端:

svc.stompClient.subscribe('/user/queue/messages', msg );

服务器:

stompTemplate.convertAndSendToUser(username, "/queue/messages", msg);

......似乎没有任何事情发生。

我已设置SessionConnectedEventSessionSubscribeEvent个侦听器,其中显示:

SessionConnectedEvent[GenericMessage [
    payload=byte[0], 
    headers={
        simpMessageType=CONNECT_ACK, 
        simpConnectMessage=GenericMessage [
            payload=byte[0], 
            headers={
                simpMessageType=CONNECT, 
                stompCommand=CONNECT, 
                nativeHeaders={
                    accept-version=[1.1,1.0], 
                    heart-beat=[10000,10000]
                }, 
                simpSessionAttributes={}, 
                simpSessionId=erlz0dm6
            }
        ], 
        simpSessionId=erlz0dm6
    }
]]

SessionSubscribeEvent[GenericMessage [
    payload=byte[0], 
    headers={
        simpMessageType=SUBSCRIBE, 
        stompCommand=SUBSCRIBE, 
        nativeHeaders={
            id=[sub-0], 
            destination=[/user/queue/messages]
        }, 
        simpSessionAttributes={}, 
        simpSubscriptionId=sub-0, 
        simpSessionId=erlz0dm6, 
        simpDestination=/user/queue/messages
    }
]]

在客户端,我看到以下内容:

 >>> SUBSCRIBE
id:sub-0
destination:/user/queue/messages

通过sendToUser方法跟踪,我可以看到它正在将/user/myusername/queue/messages传递到目标解析器。但是,服务器上没有记录任何内容,客户端也没有收到消息。

所以我很想确定:

  • 我是否可以启用任何调试日志记录,这可能有助于诊断问题?
  • 我可能遇到过任何常见的配置陷阱吗?

如果我可以提供任何其他信息(即代码)以帮助诊断问题,请告知我们。问题已经很长了,所以我试图避免使用过多的无关代码来混淆它。

我正在使用:

  • Spring Boot 1.2.1(与1.0.8相同的问题。我升级以查看它是否有帮助。)
  • sockjs-client 0.3.4
  • stomp-websocket 2.3.1

另外,如果它是相关的,我使用PreAuthenticatedAuthenticationProvider来确定用户,并使用HttpServletRequestWrapper来确保标头中定义的用户名是Principal。 1}}名字。即上面代码中的用户名是我的Active Directory域用户名。

注意 - 我检查了this question,听起来有点类似。但是,他们的工作代码'是我努力工作,但没有成功。

0 个答案:

没有答案