2团
Published on 2025-06-17 / 6 Visits
0
0

WebSocket服务开发实践小结

1. 前言

在近期项目的 WebSocket 服务开发过程中,总结了一些关键技术要点。

其中最重要的一点:WebSocket无鉴权机制。

2. 请求无法携带Header

前端反馈,由于浏览器安全策略限制,在发起 WebSocket 连接时,无法通过 JavaScript 代码设置自定义 HTTP Header(如 Authorization)。

参考:浏览器中WebSocket如何自定义请求头

3. 握手失败的异常响应

项目在 WebSocket 握手阶段会对 URL 参数中的 token 进行校验。如校验失败,后端会终止握手连接,并尝试返回自定义的异常响应。

然而,前端反馈无法捕获该自定义异常,其 WebSocket 客户端仅能接收到 1006 状态码(连接异常关闭)。

经查阅发现,这是由 WebSocket 的前端实现限制所致:客户端在握手阶段失败时,无法正确解析服务端返回的具体响应信息(包括自定义异常),统一仅返回 1006 状态码。

微信图片_20250617094747.png


Comment