微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

出现错误 DeploymentException:来自服务器 [400] 的 HTTP 响应不允许 HTTP 升级到 WebSocket

如何解决出现错误 DeploymentException:来自服务器 [400] 的 HTTP 响应不允许 HTTP 升级到 WebSocket

我试图通过我的代码连接到 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 举报,一经查实,本站将立刻删除。