Java SpringWebSocket不从服务器发送消息
您好,我对spring WebSocket有一个问题,这是一个场景: 一个独立的应用程序正在发送(远程)一些数据,如日期、过程字符串和权重BigDecimal。这些数据通过TCP发送到套接字 在这一点上,这些数据保存到数据库之后一切正常,但在下一步(websocket)中,我无法在网页中显示这些信息,重量数据必须在屏幕上显示(实时) 这是我的websocket配置:Java SpringWebSocket不从服务器发送消息,java,spring,spring-integration,spring-websocket,Java,Spring,Spring Integration,Spring Websocket,您好,我对spring WebSocket有一个问题,这是一个场景: 一个独立的应用程序正在发送(远程)一些数据,如日期、过程字符串和权重BigDecimal。这些数据通过TCP发送到套接字 在这一点上,这些数据保存到数据库之后一切正常,但在下一步(websocket)中,我无法在网页中显示这些信息,重量数据必须在屏幕上显示(实时) 这是我的websocket配置: import java.util.List; import org.springframework.context.annotat
import java.util.List;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.converter.MessageConverter;
import org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolver;
import org.springframework.messaging.handler.invocation.HandlerMethodReturnValueHandler;
import org.springframework.messaging.simp.config.ChannelRegistration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketTransportRegistration;
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfiguration implements WebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(final StompEndpointRegistry registry) {
registry.addEndpoint("/indicator").withSockJS();
}
@Override
public void configureClientInboundChannel(final ChannelRegistration registration) {
}
@Override
public void configureClientOutboundChannel(final ChannelRegistration registration) {
}
@Override
public void configureMessageBroker(final MessageBrokerRegistry registry) {
}
@Override
public void configureWebSocketTransport(WebSocketTransportRegistration wstr) {
}
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> list) {
}
@Override
public void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> list) {
}
@Override
public boolean configureMessageConverters(List<MessageConverter> list) {
return Boolean.TRUE;
}
}
在另一个类(控制器)中,我使用相同的方法:
this.messagingTemplate.convertAndSend(Constants.END_POINT_READ, "3500");
并“手动”发送正确显示的信息。我收到了debbuger的信息:
30-03-2016 15:05:18 DEBUG SimpleBrokerMessageHandler:277 - Processing MESSAGE destination=/read session=dfR45V77 payload=3500
区别在于会话值,但我不知道这个会话在过程中有什么空值,我做错了什么?欢迎提供一些帮助澄清。首先,我没有看到
配置MessageBroker
的实现,因此根本不清楚它是如何工作的
另一方面,如果您看到这样的差异,请尝试在SimpMessagingTemplate
中调试代码
我只看到headerAccessor.setSessionId(sessionId)代码>在SimpleBrokerMessageHandler
中
logger.debug("Broadcasting to " + subscriptions.size() + " sessions.");
首先,我没有看到configureMessageBroker
的实现,所以根本不清楚它是如何工作的
另一方面,如果您看到这样的差异,请尝试在SimpMessagingTemplate
中调试代码
我只看到headerAccessor.setSessionId(sessionId)代码>在SimpleBrokerMessageHandler
中
logger.debug("Broadcasting to " + subscriptions.size() + " sessions.");
您好,感谢您的快速响应,我不知道如何配置MessageBroker,但您在这个过程中是正确的我在注册表中没有订户,但我也不知道为什么,在发送此debbug 30-03-2016 16:07:42调试SimpleBrokerMessageHandler:301-广播到1个会话后,我从控制器获得的直接消息。在web记录器中,我有一个:您可以在Spring框架参考手册中找到如何配置Simple Broker:。所以,你还没有那个目的地的订户。您确实只能在有一些订阅者时发送消息,否则会话头为null
。我将这些行添加到configureMessageBroker:@Override public void configureMessageBroker(final MessageBrokerRegistry registry){registry.setApplicationDestinationPrefixes(Constants.DESTINATION\前缀);registry.enableSimpleBroker(Constants.END_POINT_READ);}但我没有完全相同的结果,我仍然有0个订阅服务器用于此上下文,另一个建议??谁是应用程序的客户端?为什么不将其订阅到所需的目的地?您好,感谢您的快速响应,我不知道如何配置MessageBroker,但您在这个过程中是正确的我在注册表中没有订阅者,但我也不知道为什么,在发送此debbug 30-03-2016 16:07:42调试SimpleBrokerMessageHandler:301-广播到1个会话后,我从控制器获得的直接消息。在web记录器中,我有一个:您可以在Spring框架参考手册中找到如何配置Simple Broker:。所以,你还没有那个目的地的订户。您确实只能在有一些订阅者时发送消息,否则会话头为null
。我将这些行添加到configureMessageBroker:@Override public void configureMessageBroker(final MessageBrokerRegistry registry){registry.setApplicationDestinationPrefixes(Constants.DESTINATION\前缀);registry.enableSimpleBroker(Constants.END_POINT_READ);}但我没有完全相同的结果,我仍然有0个订阅服务器用于此上下文,另一个建议??谁是应用程序的客户端?为什么不把它订阅到想要的目的地呢?
logger.debug("Broadcasting to " + subscriptions.size() + " sessions.");