You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派无法连接Windows端Micronaut WebSocket问题求助

问题分析与解决方案

核心问题判断

你遇到的ConnectionRefusedError和asyncio.exceptions.TimeoutError大概率和网络连通性直接相关,这是跨设备WebSocket连接失败的典型网络类问题。

是否需要转站Superuser/Serverfault?

  • 若排查后确认是基础网络配置问题(如防火墙拦截、路由规则错误、端口映射失效),去Superuser提问更合适;
  • 若问题出在Micronaut WebSocket服务端配置(如监听地址受限、端口未开放、路由配置错误)或Python客户端代码逻辑,留在Stack Overflow提问更精准。

具体排查与解决方案

1. 验证基础网络连通性

  • 在树莓派终端执行ping <Windows主机IP>,确认两台设备局域网连通;
  • 用telnet <Windows主机IP> <WebSocket端口>或nc -zv <Windows主机IP> <WebSocket端口>测试端口是否对外开放,出现拒绝连接则说明端口未被允许访问。

2. 检查Windows主机端配置

  • 确认Micronaut ServerWebSocket的监听地址不是localhost或127.0.0.1,需设置为0.0.0.0或局域网IP,否则仅允许本地访问;
  • 配置Windows防火墙:添加入站规则,放行WebSocket服务使用的端口(比如默认的8080);
  • 确认Micronaut服务已正常启动,且WebSocket端点的路由路径、注解配置无误。

3. 排查Python客户端代码

  • 确保连接URL为ws://<Windows主机IP>:<端口>/<WebSocket路径>,禁止使用localhost;
  • 调整websockets.connect()的超时参数,比如async with websockets.connect(uri, timeout=30),避免因网络延迟触发超时;
  • 捕获异常并打印详细信息,便于定位问题:
import asyncio
import websockets

async def connect():
    uri = "ws://192.168.x.x:8080/your-websocket-path"
    try:
        async with websockets.connect(uri, timeout=30) as websocket:
            await websocket.send("test data")
            response = await websocket.recv()
            print(response)
    except Exception as e:
        print(f"连接失败: {type(e).__name__}: {e}")

asyncio.run(connect())

4. 其他排查方向

  • 确认树莓派与Windows主机处于同一局域网,若为公网访问需配置端口转发;
  • 用浏览器或WebSocket测试工具(如wscat)从其他设备连接Windows的WebSocket服务,验证服务端是否正常对外提供服务。

内容的提问来源于stack exchange,提问作者Franz M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 08:45:24