【发布时间】:2017-01-24 16:15:49
【问题描述】:
如何访问 spring stomp websocket 控制器中的主机信息。
@Controller
public class EventSessionController
{
@Autowired
ApplicationContext applicationContext;
@MessageMapping("/topic/sessionmessages}")
public SocketEvent messageHandler((StompHeaderAccessor accessor, SimpMessageHeaderAccessor headerAccessor, MySocketEvent eventMsg)
{
....// Need to access request uri / host
// I could access it from headers, but its empty
System.out.println(accessor.getHost());
}
}
我可以尝试注入 MessageHeaderAccessor,但是如何访问 http 请求上下文?
@Configuration
@EnableWebSocketMessageBroker
public class EventSocketServerConfig extends AbstractWebSocketMessageBrokerConfigurer
{
@Override
public void configureClientInboundChannel(ChannelRegistration registration)
{
registration.setInterceptors(new ChannelInterceptorAdapter()
{
@Override
public Message<?> preSend(Message<?> message, MessageChannel channel)
{
StompHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);
accessor.setHost(.......how to get the http host?.......);
}
}
}
}
【问题讨论】: