gpt4 book ai didi

java - WebSocket 握手错误 : Unexpected response code: 302

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:16:08 27 4
gpt4 key购买 nike

将基于 REACT 的 WebSocket 客户端连接到基于 Java Jetty 的 Web Socket 服务器时,出现以下错误 -

WebSocket connection to 'ws://localhost:2319/ws' failed: Error during WebSocket handshake: Unexpected response code: 302

通过 Chrome 的智能网络套接字客户端连接时不存在此错误。

我正在尝试开发基于 REACT 的 Web Socket 客户端。客户端代码是 -

var connection = new WebSocket('ws://localhost:2319/ws');
connection.onopen = function () {
// connection is opened and ready to use
};

WebSocket Server 已经基于 Jetty。服务器代码是 -

server = new Server();
ServerConnector connector = new ServerConnector(server);
connector.setPort(SSConstants.WWBSOCKET_PORT);
server.addConnector(connector);

// Setup the basic application "context" for this application at "/"
// This is also known as the handler tree (in jetty speak)
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/ws"); // Set to "/ws" for future integration with the main jetty server.
server.setHandler(context);

try {
// Initialize javax.websocket layer
ServerContainer wsContainer = WebSocketServerContainerInitializer.configureContext(context);

// Add WebSocket endpoint to javax.websocket layer
wsContainer.addEndpoint(WebsocketListener.class);
server.start();
}
catch (Throwable t) {
ssLogger.logInfo("Websocket Server start exp : ");
t.printStackTrace(System.err);
}

输出-

WebSocket connection to 'ws://localhost:2319/ws' failed: Error during WebSocket handshake: Unexpected response code: 302

Request URL:ws://localhost:2319/ws
Request Method:GET
Status Code:302 Found

Response Headers
view source
Content-Length:0
Date:Fri, 11 Aug 2017 18:51:42 GMT
Location:http://localhost:2319/ws/
Server:Jetty(9.3.8.v20160314)

Request Headers
view source
Accept-Encoding:gzip, deflate, br
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:Upgrade
Host:localhost:2319
Origin:https://localhost:1338
Pragma:no-cache
Sec-WebSocket-Extensions:permessage-deflate; client_max_window_bits
Sec-WebSocket-Key:2OZooIjOX7G6kgNpPOz9Fw==
Sec-WebSocket-Version:13
Upgrade:websocket
User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36
Name

最佳答案

ws://localhost:2319/ws不是有效的端点 URL/URI,它希望重定向到您声明的正确端点 URL/URI contextPath/ws

这就是 302 重定向告诉你的......

Location: http://localhost:2319/ws/

假设您的 WebsocketListener声明为 @ServerEndpoint("/ws") ,我们使用您的 ServletContextcontextPath"/ws"这意味着您访问该 websocket 端点的 URL/URI 是 ...

ws://localhost:2319/ws/ws

或者换个说法...

ws://<host>:<port>/<contextPath>/<endpointPath>

关于java - WebSocket 握手错误 : Unexpected response code: 302,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45655753/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com