使用websocat连localhost报I/O failure,换127.0.0.1正常的原因
问题原因与解决方案
核心原因
- Alpine Linux容器中,
localhost默认优先解析为IPv6地址::1。如果你的WebSocket服务仅监听了IPv4的127.0.0.1:1234,未开启IPv6监听,那么执行websocat ws://localhost:1234时,工具会尝试连接IPv6的::1:1234,但该地址无对应服务,就会触发WebSocketError: I/O failure报错。 - 直接使用
127.0.0.1时,websocat会明确连接IPv4地址,刚好匹配服务的监听端口,因此能正常连接无报错。
可选解决方式
如果需要让localhost也能正常连接,可二选一:
- 调整WebSocket服务的监听配置,改为监听
::地址(该地址同时覆盖IPv4和IPv6),这样服务会同时响应两种协议的连接请求。 - 修改容器内
/etc/hosts文件,将localhost仅映射到127.0.0.1(不推荐此方案,会破坏系统默认的IPv6解析逻辑)
内容的提问来源于stack exchange,提问作者Dolphin
相关产品推荐
相关产品推荐

