Tôi đang cố gắng tạo một điểm cuối websocket với mùa xuân. Nhưng Bất cứ khi nào tôi cố gắng kết nối từ phía khách hàng, tôi nhận được 404. Tôi cũng có triển khai Java vớiSpring websocket getting 404 không tìm thấy
@ServerEndpoint(value = "/websocket")
hoạt động tốt. Dưới đây là mã thực hiện mùa xuân của tôi mà không hoạt động. Tôi làm gì sai ở đây?
package com.tlab.endpoint;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.WebSocketHandler;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(socketHandler(),"/socket");;
}
@Bean
public WebSocketHandler socketHandler() {
return new SocketHandler();
}
}
dưới đây là Handler
package com.tlab.endpoint;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;
public class SocketHandler extends TextWebSocketHandler {
@Override
public void handleTextMessage(WebSocketSession session, TextMessage message) {
}
}
Trong đoạn code phía khách hàng tôi đã thử tất cả diff có thể kết hợp
với/ổ cắm trong handler
var websocket = new WebSocket("ws://localhost:8080/tsim/socket");
var websocket = new WebSocket("ws://localhost:8080/tsim/socket");
var websocket = new WebSocket("ws://localhost:8080/tsim/rest/socket");
với/nghỉ ngơi/ổ cắm trong handler
var websocket = new WebSocket("ws://localhost:8080/tsim/rest/socket");
nơi tsim là ngữ cảnh của tôi. Mọi thứ đều ném lỗi bên dưới
WebSocket connection to 'ws://localhost:8080/tsim/socket' failed: Error during WebSocket handshake: Unexpected response code: 404.
Tôi không nhận được bất kỳ lỗi biên dịch và triển khai nào. Tôi đã sử dụng tomcat 8.0 và dưới đây là cấu hình servatcher dispatcher.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:int="http://www.springframework.org/schema/integration"
xmlns:int-ftp="http://www.springframework.org/schema/integration/ftp"
xmlns:batch="http://www.springframework.org/schema/batch"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:websocket="http://www.springframework.org/schema/websocket"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch-2.2.xsd
http://www.springframework.org/schema/integration/ftp http://www.springframework.org/schema/integration/ftp/spring-integration-ftp.xsd
http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
http://www.springframework.org/schema/websocket
http://www.springframework.org/schema/websocket/spring-websocket.xsd"
>
<import resource="classpath*:web-db-spring.xml"/>
<context:component-scan base-package="com.traderslab.nseb,com.tlab.endpoint"/>
<aop:aspectj-autoproxy/>
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="prefixJson" value="false"/>
<property name="supportedMediaTypes" value="application/json"/>
<property name="objectMapper">
<bean class="com.fasterxml.jackson.databind.ObjectMapper">
<property name="serializationInclusion" value="NON_NULL"/>
</bean>
</property>
</bean>
<bean class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
<mvc:default-servlet-handler/>
</beans>
dưới đây là web.xml của tôi
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/rest/</url-pattern>
</servlet-mapping>
Bạn hiển thị 'ws: // localhost: 8080/tsim/socket' trong ví dụ của mình nhưng thông báo lỗi hiển thị 'ws: // localhost: 8080/TradeSim/socket'. Đó là 'tsim' hay' TradeSim'? – Bogdan
Tôi đã thử một cách khác .. phần mà tôi đề cập lấy nó như là tsim hoặc TradeSim là bối cảnh của nó .. Để tránh nhầm lẫn, tôi sẽ chỉnh sửa nó – anandaravindan