面向非web应用程序的SockJS Java客户端实现

面向非web应用程序的SockJS Java客户端实现,java,swing,spring-boot,websocket,sockjs,Java,Swing,Spring Boot,Websocket,Sockjs,如何使用SpringBoot在JavaSwing应用程序中实现SockJS客户端。如果有相当好的例子,请提及 首先,查阅官方文件: 一个非web应用程序仍然需要一个应用服务器,在您的情况下,一个嵌入式解决方案就足够了。如果您使用的是maven,请尝试以下示例: <dependencies> <dependency> <groupId>org.springframework</groupId> <arti

如何使用SpringBoot在JavaSwing应用程序中实现SockJS客户端。如果有相当好的例子,请提及

首先,查阅官方文件:

一个非web应用程序仍然需要一个应用服务器,在您的情况下,一个嵌入式解决方案就足够了。如果您使用的是maven,请尝试以下示例:

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.3.5.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-websocket</artifactId>
        <version>4.3.5.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>1.10.19</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-messaging</artifactId>
        <version>4.3.5.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-client</artifactId>
        <version>9.4.0.v20161208</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-websocket</artifactId>
        <version>8.5.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-logging-log4j</artifactId>
        <version>8.5.2</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.5.3</version>
        <scope>runtime</scope>
    </dependency>
</dependencies>

希望这会有所帮助:祝你好运

谢谢,伙计,你能不能也提到完整的依赖关系。有些类不在tomcat dependencyTransport、WebSocketTransport、StandardWebSocketClient、RestTemplateXhrTransport、SockJsClient、WebSocketStompClient、StringMessageConverter、StompSession中,DefaultStompFrameHandler不在tomcat服务器库中查找我的答案中的依赖项列表:2017-01-26 16:23:24.060错误4184-[lient-AsyncIO-1]o.s.w.s.s.s.c.WebSocketClientSockJsSession:由于WebSocketClientSockJsSession中状态=关闭而忽略收到的消息[id='8E606CB4E41F6AE635C694D71B362,url=ws://192.168.1.20:8080/ws]你能说出原因吗。服务器工作正常
List<Transport> transports = new ArrayList<Transport>(2);
    transports.add(new WebSocketTransport(new StandardWebSocketClient()));
    transports.add(new RestTemplateXhrTransport());
    SockJsClient sockJsClient = new SockJsClient(transports);
    WebSocketStompClient stompClient = new WebSocketStompClient(sockJsClient);
    stompClient.setMessageConverter(new StringMessageConverter());
    StompSession session = null;
    DefaultStompFrameHandler stompHandler = new DefaultStompFrameHandler();
    try {
        session = stompClient.connect(WEBSOCKET_URI, new MyStompSessionHandler()).get(1, TimeUnit.SECONDS);
        session.subscribe("/topic" + "/channel", stompHandler);
        // do your stuff
        ...         
    } finally {
        if (session != null) {
            session.disconnect();
        }
    }
@SpringBootApplication
public class Application {

public static void main(String[] args) {
    ConfigurableApplicationContext context = new  SpringApplicationBuilder(Application.class).headless(false).run(args);

    EventQueue.invokeLater(() -> {
        // this is your JFrame
        AppPrincipalFrame appFrame = context.getBean(AppPrincipalFrame.class);
        appFrame.setVisible(true);
    });