Java SpringWebSocket不从服务器发送消息

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

您好,我对spring WebSocket有一个问题,这是一个场景:

一个独立的应用程序正在发送(远程)一些数据,如日期、过程字符串和权重BigDecimal。这些数据通过TCP发送到套接字

在这一点上,这些数据保存到数据库之后一切正常,但在下一步(websocket)中,我无法在网页中显示这些信息,重量数据必须在屏幕上显示(实时)

这是我的websocket配置:

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.");