无法连接到 java websocket 服务器

我正在尝试创建一个简单的 websocket java 聊天。但是我很难弄清楚这里的问题是什么以及为什么我会收到“ Firefox 无法在 ws://localhost:8080/ivan-stanev-client/chat/a 建立与服务器的连接” . 我有一个简单的 web socket 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


临摹微笑
浏览 565回答 1
1回答

汪汪一只猫

问题是什么?Tomcat 使用 ServletContainerInitializer 来查找应用程序中使用 ServerEndpoint 注释的任何类。另一方面,当您使用任何嵌入式 Web 容器时,Spring Boot 不支持 ServletContainerInitializer。因此,我们需要通过创建 ServerEndpointExporter 的 bean 来导出我们的 ServerEndpoint。WebSocketConfig 类必须在应用程序中创建。@Configurationpublic class WebSocketConfig {&nbsp; &nbsp; @Bean&nbsp; &nbsp; public ServerEndpointExporter serverEndpointExporter() {&nbsp; &nbsp; &nbsp; &nbsp; return new ServerEndpointExporter();&nbsp; &nbsp; }}我也错过了 WebSocket 服务器上的 @Component 注释。-- 学分http://thegeekyasian.com/websocket-in-spring-boot/
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript