带有 Spring Boot 的 JAVAX JSR 356 Websocket

我正在尝试在 Spring Boot 项目中使用 Javax JSR 356 API 实现服务器端 websocket 端点。我正在关注本教程。我知道在这个主题上有一些关于 SO 的问题,但我无法找到一个合理的解决方案。当我尝试使用客户端 (ARC) 连接到 websocket 时,它只报告“发生未知错误”。我检查了嵌入式 Tomcat 服务器的日志,但没有任何条目。根据 Tomcat 启动条目,应用程序的上下文路径为空 (""),因此我确定我使用正确的 URI 访问了 websocket。


这是我的代码:


@ServerEndpoint(value = "/socket", configurator = SpringConfigurator.class)

public class WebSocketController

{

    @OnOpen

    public void onOpen(Session session) throws IOException

    {

        System.out.println("Socket has been opened: " + session.getId());

    }


    @OnClose

    public void onClose(Session session) throws IonException

    {

        System.out.println("Socket has been closed: " + session.getId());

    }

}


Spring configuration class

@Configuration

public class WebSocketConfig

{

    @Bean

    public WebSocketController webSocketController()

    {

        return new WebSocketController();

    }


    @Bean

    public ServletContextAware endpointExporterInitializer(final ApplicationContext applicationContext) {

        return new ServletContextAware() {


            @Override

            public void setServletContext(ServletContext servletContext) {

                ServerEndpointExporter serverEndpointExporter = new ServerEndpointExporter();

                serverEndpointExporter.setApplicationContext(applicationContext);

                try {

                    serverEndpointExporter.afterPropertiesSet();

                } catch (Exception e) {

                    throw new RuntimeException(e);

                }

            }

        };

    }

}

如何在 Spring Boot 应用程序中实现服务器端 websocket 端点?


慕斯709654
浏览 227回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java