OpsKitPro logo
OpsKitPro_
Back to blog
工具2026-04-227 min

How the WebSocket debugger works: design, implementation, use, and usage

Multi-connection tabs, message templates, binary sending, session saving, and log retrieval for real debugging.

This article reads through design, implementation, and usage in one flow.
Open tool
How the WebSocket debugger works: design, implementation, use, and usage
About the article

This page is organized as a full read-through, from background to implementation and usage.

Article body

WebSocket 调试最麻烦的是什么

01

WebSocket 调试的难点,不只是“能不能连上”,而是连上之后要怎么发消息、怎么看日志、怎么留存会话。很多时候你还要同时调多个连接,或者在文本、JSON、二进制之间切换。

所以我把它做成了一个多标签工作台,目标是让调试像开几个终端一样自然。

Reference filessrc/app/tools/websocket/WebsocketClient.tsxsrc/app/tools/websocket/page.tsx

为什么要拆成几个面板

02

一个 WebSocket 工具如果只有一块大输入框,通常不够用。真正调试时,你会同时关心连接状态、消息模板、发送内容、日志列表、统计信息和二进制编码。

所以我把它拆成连接面板、消息编辑器、日志视图、统计面板、二进制构造器和会话管理几个部分。每块都小一点,组合起来反而更好用。

Reference filessrc/app/tools/websocket/components/ConnectionPanel.tsxsrc/app/tools/websocket/components/MessageComposer.tsxsrc/app/tools/websocket/components/LogViewer.tsxsrc/app/tools/websocket/components/SessionManager.tsx

实现和用法

03

实现上我用 `useWebSocket` 和 `useMultiConnection` 去管理连接状态、日志和发送逻辑。这样可以把连接生命周期、消息统计和会话切换拆开,避免一个巨大组件把所有事情都塞在一起。

用法很直接:先输入 WebSocket 地址,再选文本或二进制模式,连接后发消息、看日志,需要时保存会话。对调试 echo 服务、内部推送或者实时通知都很方便。

Reference filessrc/app/tools/websocket/hooks/useWebSocket.tssrc/app/tools/websocket/hooks/useMultiConnection.tssrc/app/tools/websocket/hooks/useMessageTemplates.tssrc/app/tools/websocket/hooks/useMessageHistory.ts