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