问题描述
我试图通过我的代码连接到 websocket URL,但它抛出了 400 错误,但是当我试图通过 simplewebsocket 客户端访问它时它正在工作
javax.websocket.DeploymentException:来自服务器 [400] 的 HTTP 响应不允许 HTTP 升级到 WebSocket 在 org.apache.tomcat.websocket.WsWebSocketContainer.connectToServerRecursive(WsWebSocketContainer.java:437) 在 org.apache.tomcat.websocket.WsWebSocketContainer.connectToServer(WsWebSocketContainer.java:197)
这里是 websocket 配置代码
import org.java_websocket.client.WebSocketClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.WebSocketHandler;
import org.springframework.web.socket.client.WebSocketConnectionManager;
import org.springframework.web.socket.client.standard.StandardWebSocketClient;
@Configuration
public class ClientWebSocketConfig {
@Bean
public WebSocketConnectionManager webSocketConnectionManager() {
WebSocketConnectionManager manager = new WebSocketConnectionManager(
webSocketClient(),webSocketHandler(),"ws://*******/websocket/"
);
manager.setAutoStartup(true);
return manager;
}
@Bean
public StandardWebSocketClient webSocketClient() {
return new StandardWebSocketClient();
}
@Bean
public WebSocketHandler webSocketHandler() {
return new ClientWebSocketHandler();
}
}
这里是套接字处理程序
公共类 ClientWebSocketHandler 扩展了 TextWebSocketHandler {
private static final Logger logger = LoggerFactory.getLogger(MyWebSocketClient.class);
@Override
public void afterConnectionestablished(WebSocketSession session) throws Exception {
logger.info("Client connection opened");
}
@Override
public void afterConnectionClosed(WebSocketSession session,CloseStatus status) {
logger.info("Client connection closed: {}",status);
}
@Override
public void handleTextMessage(WebSocketSession session,TextMessage message) {
logger.info("Client received: {}",message);
}
@Override
public void handleTransportError(WebSocketSession session,Throwable exception) {
logger.info("Client transport error: {}",exception.getMessage());
}
}
这里是主类
public class Application {
@Autowired
WebSocketClientManager webSocketClientManager;
public static void main(String[] args) {
//SpringApplication.run(Application.class,args);
new SpringApplicationBuilder(Application.class)
.web(WebApplicationType.NONE)
.run(args);
}
不确定我是否必须在这些场景中添加任何额外的代码。我确实尝试使用此代码与我的应用程序中的其他 websocket 连接,它似乎工作正常 我确实尝试在 simplewebsocket 插件中验证 websocket url 'ws://*******/websocket/'。我能够成功连接并能够检索插件中的数据。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)