Ste*_*eve 5 java spring stomp spring-boot spring-websocket
我无法让用户目的地使用Spring STOMP websockets.
我似乎有一般的配置工作.例如,以下工作.
客户:
svc.stompClient.subscribe('/queue/messages', msg );
Run Code Online (Sandbox Code Playgroud)
服务器:
stompTemplate.convertAndSend("/queue/messages", msg);
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试发送到特定用户目标时,如下所示:
客户:
svc.stompClient.subscribe('/user/queue/messages', msg );
Run Code Online (Sandbox Code Playgroud)
服务器:
stompTemplate.convertAndSendToUser(username, "/queue/messages", msg);
Run Code Online (Sandbox Code Playgroud)
......似乎没有任何事情发生.
我有设置SessionConnectedEvent和SessionSubscribeEvent听众,显示:
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
}
]]
Run Code Online (Sandbox Code Playgroud)
在客户端,我看到以下记录:
>>> SUBSCRIBE
id:sub-0
destination:/user/queue/messages
Run Code Online (Sandbox Code Playgroud)
通过该sendToUser方法跟踪某些方法,我可以看到它正在传递/user/myusername/queue/messages到目标解析器.但是,服务器上不会记录任何其他内容,并且客户端不会收到该消息.
所以我很想确定:
如果有任何其他信息(即代码)可以提供帮助诊断问题,请告诉我.问题已经很长了,所以我试图避免使用过多的无关代码来混淆它.
我正在使用:
此外,如果它是相关的,我使用a PreAuthenticatedAuthenticationProvider来确定用户,并HttpServletRequestWrapper确保标题中定义的用户名作为Principal名称提供.即上面代码中的用户名是我的Active Directory域用户名.
注意 - 我已经检查了这个问题,听起来有点类似.然而,他们的"工作代码"是我努力工作的一点,没有成功.
| 归档时间: |
|
| 查看次数: |
1189 次 |
| 最近记录: |