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

部署于Azure WebApp的Node.js服务器无法与Hololens端Unity连接求助

排查Azure Web App部署后Unity无法连接Node.js服务器的问题

我帮你梳理下部署到Azure Web App后,Unity无法通过WebSocket连接Node.js服务器的几个核心排查点,结合你的场景和代码来看,主要是配置和连接方式的问题:

1. 必须启用Azure Web App的WebSocket支持

Azure Web App默认是关闭WebSocket功能的,而你的代码用了ws库实现WebSocket通信,这是最可能导致连接失败的原因。你需要:

  • 登录Azure门户,找到你的Web App
  • 进入「配置」→「常规设置」
  • 找到「WebSocket」选项,将开关设置为「开启」
  • 保存配置,Web App会自动重启生效

2. 修正Unity的连接地址格式

本地测试时你可能用的是ws://localhost:8080,但部署到Azure Web App后,连接地址需要调整:

  • 不要用IP地址,直接使用Web App的官方域名,比如wss://your-webapp-name.azurewebsites.net
  • 必须使用wss://协议(对应HTTPS),而不是ws://,因为Azure Web App默认强制HTTPS,普通WebSocket请求会被重定向,导致连接失败
  • 不需要在地址后加端口,Web App会自动将80/443端口转发到内部的process.env.PORT端口

3. 确认端口配置的正确性

你的代码里const PORT = process.env.PORT || 8080是正确的,但要注意:

  • 部署到Azure后,Web App会自动分配内部端口,绝对不能硬编码端口号(比如8080),必须依赖process.env.PORT环境变量
  • 不要在Unity连接地址里指定端口,Web App的反向代理会处理端口映射

4. 代码与配置的优化建议

  • 不要硬编码连接字符串:把IoT Hub的连接字符串放到Web App的「应用程序设置」里(配置→应用程序设置),然后在代码里用process.env.IOTHUB_CONNECTION_STRING读取,既安全又方便修改
  • 排查多客户端场景的潜在问题:你的代码在每个WebSocket连接建立时,都会绑定receiver.on('data')事件,这会导致后续客户端连接时,同一条IoT Hub消息被多次发送给不同客户端,如果是单客户端场景没问题,但多客户端的话建议调整事件绑定逻辑

5. 利用日志定位问题

如果还是无法连接,去Azure Web App的「日志流」查看服务器输出:

  • 确认是否打印了Server started,说明服务器正常启动
  • 查看是否有Client connected的日志,判断Unity的连接请求是否到达服务器
  • 检查是否有报错信息,比如WebSocket连接错误、IoT Hub连接失败等

按照以上步骤排查,应该能解决Unity无法连接Azure Web App上Node.js服务器的问题。

内容的提问来源于stack exchange,提问作者Jared Mackenzie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:11:19