我正在尝试创建一个简单的 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
1 回答
汪汪一只猫
TA贡献1898条经验 获得超8个赞
问题是什么?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/
添加回答
举报
0/150
提交
取消