
如何在 Printer Tools 中修复 Moonraker WebSocket 连接错误
Moonraker WebSocket 故障排除
简短答案
Printer Tools 会与 Moonraker 保持一个位于 ws(s)://<host>/websocket 的实时 WebSocket 连接,一旦断开会每 5 秒自动重新连接一次。大多数连接错误来自无法访问的主机、变化的 IP 地址,或 Klippy 尚未就绪,而不是应用本身的问题。先检查这三点可以解决大多数情况。
你需要准备
- 运行 Moonraker 的打印机当前使用的准确本地 IP 地址或主机名
- 确认 Klippy 显示为 Ready,而不是 Error 或 Shutdown
- 手机或电脑与打印机主机可以互相访问的同一网络
- 如果你的配置使用 HTTPS 或反向代理,需要包含协议和端口的完整地址
- 你的安装所需的任何 Moonraker API key、Bearer token 或 Basic Auth 凭据
诊断 Moonraker WebSocket 错误
- 1
确认 Klippy 是否真的就绪
在浏览器中打开同一主机,或者如果已安装 Mainsail 或 Fluidd,也可以在那里打开。如果 Klippy 在那里同样显示 Error 或 Shutdown,问题出在 Klipper 或你的 printer.cfg,而不是 Printer Tools,重新连接应用也无济于事,除非 Klippy 本身恢复正常。
- 2
重新检查主机地址
路由器重启后通常会分配一个新的本地 IP 地址。确认运行 Moonraker 的机器当前的地址,如果发生变化,请在 Printer Tools 中更新。在路由器中为该设备保留一个静态地址可以避免这种情况再次发生。
- 3
为自定义配置输入完整地址
如果 Moonraker 位于 HTTPS、非默认端口或反向代理之后,请像在浏览器中输入那样输入完整地址。Printer Tools 会根据你提供的信息构建 WebSocket URL,因此不完整或错误的地址会在到达 Moonraker 之前就失败。
- 4
匹配你的安装所需的身份验证
如果 Moonraker 强制要求 API key、Bearer token 或 Basic Auth,必须在 Printer Tools 中输入相同的凭据。凭据不匹配会导致 WebSocket 在打开后立即关闭,而不是阻止最初的连接尝试。
- 5
强制进行一次干净的重新连接
移除并重新添加打印机,或者关闭再打开连接,以便从头重置该套接字,而不是等待自动重试。这也会清除上一次连接尝试遗留的任何待处理请求。
- 6
排查网络路径问题
访客 Wi-Fi、客户端隔离、VLAN 防火墙规则或活跃的 VPN 配置文件,都可能阻止手机访问打印机主机,即使两台设备都显示有互联网访问。在断定问题出在 Moonraker 本身之前,先在同一网络段中进行测试。
Printer Tools 中的 Moonraker 状态


Klipper 仪表盘会实时反映 WebSocket 的状态,并在 Moonraker 恢复可访问后自动更新。
WebSocket 连接支持的功能
- 实时推送的打印状态、进度、温度和标准 Klipper 对象
- 无需重新打开应用即可每 5 秒自动重新连接一次
- 在正常后台使用期间保持连接存活的心跳机制
- 每次连接成功后立即执行的 Klippy 状态检查
- 在你的 Moonraker 配置需要时支持 API key、Bearer token 或 Basic Auth
这无法解决的问题
- Klippy 的错误或关闭状态必须在 Klipper 本身中解决,而不是通过 Printer Tools
- 如果打印机保存的 IP 未更新,Printer Tools 将无法连接到已更改地址的主机
- 手机与打印机主机之间的网络隔离会阻止 WebSocket 连接,与应用设置无关
- 即使应用显示已断开连接,正在进行的打印仍会在打印机上继续
常见的 WebSocket 错误
Printer Tools 一直停留在连接中
确认主机地址是最新且可访问的,并确认 Moonraker 本身正在运行。如果同一地址在浏览器中也无法访问,问题就出在打印机主机上,而不是应用本身。
连接建立后又反复断开
检查是否存在会断开空闲客户端的网络,例如某些路由器的 Wi-Fi 省电功能,或由配置错误引起的 Moonraker 重启循环。查看打印机主机上的 Moonraker 日志,寻找反复出现的断开连接记录。
Mainsail 或 Fluidd 能连接,但 Printer Tools 不能
使用在浏览器中有效的完全相同的地址,包括协议和端口。浏览器悄悄接受的反向代理或 HTTPS 证书,仍可能要求在 Printer Tools 中手动输入完整地址。
连接后 Klippy 立即显示错误
这说明 WebSocket 本身连接成功,问题出在 Klipper 自身的配置中。请先修复 printer.cfg 中报告的错误,并通过 Moonraker 重启 Klipper,然后再期望 Printer Tools 显示正常的仪表盘。
在家中连接正常,但离开本地网络后就失败
直接的 Moonraker WebSocket 连接只能在同一本地网络中使用。请使用 VPN 连回你的家庭网络,或者在 Printer Tools 中通过 OctoEverywhere 或 Obico 远程访问选项添加打印机,而不是直接将 Moonraker 暴露到公网。
从网络外部重新连接
直接 WebSocket 连接只有在手机和打印机主机处于可互相访问的同一网络时才能使用。若需要远程访问,请使用 VPN 连回该网络,或在 Printer Tools 中通过 OctoEverywhere 或 Obico 连接同一台 Klipper 打印机。不要在路由器上直接转发 Moonraker 端口。
常见问题
Printer Tools 使用的是 Moonraker 的 WebSocket 还是其 REST API?
Printer Tools 通过 Moonraker 位于 /websocket 的 WebSocket JSON-RPC API 连接,用于获取实时遥测数据和控制,因此通往该端点的稳定网络路径,比单次 REST 请求是否成功更为重要。
应用多久重试一次失败的连接?
每 5 秒自动重试一次,直到 WebSocket 再次接受连接为止。没有需要触及的手动重试次数上限。
连接丢失会中止我的打印吗?
不会。Klipper 会继续在打印机本身上打印。Printer Tools 失去 WebSocket 连接只意味着应用在重新连接之前停止接收实时更新。
需要运行 Mainsail 或 Fluidd 才能使用这个功能吗?
不需要。Printer Tools 直接与 Moonraker 通信。Mainsail 和 Fluidd 有助于在排查问题时比较行为,但两者都不是必需的。
为什么连接在 Wi-Fi 下正常,但通过我的 VPN 就不行?
如果 VPN 没有将流量路由到你家庭网络的本地 IP 范围,就无法直接连接到 Moonraker。请使用配置为可以到达该网络的 VPN,或者改用 OctoEverywhere 或 Obico。
查看完整的 Klipper 和 Moonraker 兼容性
查看受支持的 Moonraker 功能、可选的摄像头和 Spoolman 要求、远程访问方式以及当前的限制。


