无需登录 数据私有 本地保存

WebSocket 消息构建器 - 编辑并发送文本/二进制帧

9
0
0
0
未连接
0 字符
0 字节
或按 Ctrl+Enter
0
已发送
0
已接收
0
发送字节
00:00
连接时长
消息日志

暂无消息日志

连接WebSocket服务器并发送消息后,日志将显示在这里
WebSocket 常见问题与知识点
WebSocket 和 HTTP 有什么区别?

HTTP 是请求-响应模型,客户端发起请求,服务端响应后连接关闭(或保持短暂keep-alive)。适合获取资源、提交表单等场景。

WebSocket 是持久化双向通信协议。握手阶段使用HTTP升级(Upgrade请求),之后切换为全双工的WebSocket协议。服务端可以主动推送数据给客户端,延迟极低,适合实时应用(聊天、游戏、股票行情、IoT等)。

关键区别:WebSocket减少了每次通信的头部开销(仅2-14字节帧头),而HTTP每次请求都带有完整的请求头。

WebSocket 的握手过程是怎样的?

步骤:

  1. 客户端发送HTTP Upgrade请求,包含 Upgrade: websocketConnection: Upgrade 头部,以及 Sec-WebSocket-Key(随机Base64值)。
  2. 服务端返回 101 Switching Protocols 状态码,包含 Sec-WebSocket-Accept(对客户端Key的SHA-1哈希+Base64编码)。
  3. 握手完成后,TCP连接保持打开,双方开始使用WebSocket帧进行通信。

如果握手失败(如服务端不支持WebSocket),会返回4xx错误,连接不会建立。

wss:// 和 ws:// 有什么区别?什么时候该用哪个?

ws:// 是明文WebSocket连接(类似HTTP),wss:// 是加密的TLS/SSL WebSocket连接(类似HTTPS)。

生产环境强烈建议使用 wss://,原因:数据加密防窃听、防止中间人攻击、通过防火墙和代理更友好。大多数生产环境的WebSocket服务都运行在wss上。

本地开发测试可以使用 ws://localhost,但部署到公网时务必切换到wss。

如何处理 WebSocket 断线重连?

WebSocket不会自动重连,需要开发者实现。推荐策略:

  • 指数退避重连:首次重连等待1秒,之后每次加倍(2s, 4s, 8s...),设置最大延迟上限(如30秒)。
  • 监听onclose事件:在关闭回调中触发重连逻辑。
  • 心跳检测:定期发送ping消息(应用层),超时未收到pong则主动断开并重连。
  • 页面可见性API:页面从后台恢复时检查连接状态,必要时重连。
WebSocket 消息大小有限制吗?

协议层面,WebSocket帧支持最大 2^63-1 字节的有效载荷(通过扩展长度字段)。但实际限制取决于:

  • 浏览器限制:大多数浏览器允许单条消息最大约 16MB-256MB。
  • 服务端配置:Nginx、Apache等反向代理可能有默认的缓冲区大小限制(如Nginx默认1MB的proxy_buffer_size)。
  • 应用层协议:建议应用层自行分片处理大于1MB的消息。

如果需要传输大文件,建议使用分片传输或考虑使用WebRTC数据通道。

什么是 WebSocket 帧(Frame)?有哪些类型?

WebSocket通信的基本单位是。常见帧类型(opcode):

  • 0x1 - 文本帧:携带UTF-8文本数据。
  • 0x2 - 二进制帧:携带任意二进制数据。
  • 0x8 - 关闭帧:关闭连接,可附带关闭码和原因。
  • 0x9 - Ping帧:心跳检测,接收方应回复Pong。
  • 0xA - Pong帧:Ping的响应。

浏览器端WebSocket API会自动处理Ping/Pong和关闭帧,开发者主要处理文本帧和二进制帧。本工具支持构建和发送文本帧与二进制帧。

WebSocket 常见关闭码有哪些?
  • 1000:正常关闭。
  • 1001:端点离开(如页面关闭、服务端关闭)。
  • 1002:协议错误。
  • 1003:收到不支持的数据类型。
  • 1006:连接异常关闭(网络问题等,无法通过代码发送)。
  • 1008:策略违规。
  • 1011:服务端内部错误。

当连接关闭时,本工具会显示关闭码和原因,帮助调试连接问题。

如何调试 WebSocket 连接问题?

常见排查步骤:

  1. 检查URL是否正确:确认使用 ws:// 或 wss:// 协议,端口号是否正确。
  2. 浏览器开发者工具:Chrome DevTools → Network → WS标签,可查看帧详情。
  3. 检查防火墙/代理:某些网络环境会阻断WebSocket连接。
  4. 使用本工具测试:连接到已知的Echo服务器验证客户端功能正常。
  5. 检查服务端日志:查看服务端WebSocket处理日志。
  6. SSL证书问题:wss连接需要有效的SSL证书,自签名证书需手动信任。