繁体   English   中英

无法连接到 java websocket 服务器

[英]Cannot connect to java websocket server

我正在尝试创建一个简单的 websocket java 聊天。 但是我正在努力弄清楚这里的问题是什么以及为什么我收到“ Firefox 无法与 ws://localhost:8080/ivan-stanev-client/chat/a 上的服务器建立连接” . 我有一个简单的网络套接字 java 服务器:

@ServerEndpoint(value = "/chat/{username}", decoders = MessageDecoder.class, encoders = MessageEncoder.class)
public class ChatEndpoint {
    private Session session;
    private static final Set<ChatEndpoint> chatEndpoints = new CopyOnWriteArraySet<>();
    private static HashMap<String, String> users = new HashMap<>();

    @OnOpen
    public void onOpen(Session session, @PathParam("username") String username) throws IOException, EncodeException {

        this.session = session;
        chatEndpoints.add(this);
        users.put(session.getId(), username);

        Message message = new Message();
        message.setFrom(username);
        message.setContent("Connected!");
        broadcast(message);
    }
...

这是在javascript中创建错误的部分(不知道为什么我无法建立连接,我到处搜索):

    ws = new WebSocket("ws://" + document.location.host + "/ivan-stanev-client/chat/" + username);

PS我正在关注本教程: https : //github.com/eugenp/tutorials/tree/c83c449fa5a7ac2462fabf0ed26969f1b037aa12/java-websocket

问题是什么? Tomcat 使用 ServletContainerInitializer 来查找应用程序中使用 ServerEndpoint 注释的任何类。 另一方面,当您使用任何嵌入式 Web 容器时,Spring Boot 不支持 ServletContainerInitializer。

因此,我们需要通过创建 ServerEndpointExporter 的 bean 来导出我们的 ServerEndpoint。 必须在应用程序中创建 WebSocketConfig 类。

@Configuration
public class WebSocketConfig {
    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }
}

我还缺少 WebSocket 服务器上的 @Component 注释。

-- 学分http://thegeekyasian.com/websocket-in-spring-boot/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM