DSharpPlus连接Lavalink返回404(预期101):原因及解决方法问询
错误分析与解决办法
错误含义
机器人控制台的WebSocketException (404)表示:尝试与Lavalink建立WebSocket连接时,服务器返回了404(资源未找到)状态码,而非WebSocket握手必须的101(协议切换成功)状态码,导致连接失败。
结合Lavalink日志里的No mapping for GET /,可以确定核心问题:机器人请求的是Lavalink的根路径/,但Lavalink的WebSocket服务并不在根路径,而是部署在带版本号的特定端点上。
解决步骤
- 先确认你的Lavalink版本,对应匹配正确的WebSocket端点路径:
- Lavalink v4.x:使用
/v4/websocket - Lavalink v3.x:使用
/v3/websocket
- Lavalink v4.x:使用
- 在DSharpPlus的Lavalink节点配置中,补全完整的WebSocket URL。例如:
若原配置为ws://127.0.0.1:2333,需修改为ws://127.0.0.1:2333/v4/websocket(对应v4版本) - 重启机器人和Lavalink服务器,重新发起连接
附错误日志
机器人控制台错误
[2024-01-14 21:30:38 +01:00] [401 /LavalinkConn] [Crit ] Failed to connect to Lavalink, retrying in 7500 ms. System.Net.WebSockets.WebSocketException (0x80004005): The server returned status code '404' when status code '101' was expected. at System.Net.WebSockets.WebSocketHandle.ValidateResponse(HttpResponseMessage response, String secValue) at System.Net.WebSockets.WebSocketHandle.ConnectAsync(Uri uri, HttpMessageInvoker invoker, CancellationToken cancellationToken, ClientWebSocketOptions options) at System.Net.WebSockets.ClientWebSocket.ConnectAsyncCore(Uri uri, HttpMessageInvoker invoker, CancellationToken cancellationToken) at DSharpPlus.Net.WebSocket.WebSocketClient.ConnectAsync(Uri uri) at DSharpPlus.Lavalink.LavalinkNodeConnection.StartAsync()
Lavalink控制台日志
2024-01-14T21:32:31.346+01:00 WARN 68551 --- [ XNIO-1 task-2] o.s.web.servlet.PageNotFound : No mapping for GET / 2024-01-14T21:32:31.347+01:00 INFO 68551 --- [ XNIO-1 task-2] l.server.io.RequestLoggingFilter : GET /
内容的提问来源于stack exchange,提问作者Tidlix
相关产品推荐
相关产品推荐

