在手机或平板上运行网页雷达
网页雷达服务运行在副机(第二台电脑)上,把雷达发送到手机浏览器。本文讲清如何查到电脑的局域网地址、添加防火墙规则、连接手机,以及开放一个本地端口意味着什么。
简短回答
网页雷达是运行在副机上的 HTTP 和 WebSocket 服务,同一网络里的任何浏览器都能访问。它不需要融合器或采集卡,只需要电脑的局域网地址、一条放行该端口的防火墙规则,以及一台连着同一网络的设备。
本页内容10
网页雷达是怎么工作的?
副机上的雷达软件会启动一个小型网页服务器,它分为两部分。一部分提供由 HTML、JavaScript 和一张地图图片组成的页面。另一部分是一个保持连接的 WebSocket 端点,读取程序每产生一次位置更新,它就推送一次。浏览器只加载一次页面,之后通过这个 socket 持续接收坐标流,所以雷达能流畅移动,从不需要刷新页面。常见的实现会绑定在 localhost 的某个默认端口上,好几个公开项目用的是 80 端口。大多数实现都提供一个设置项,用来填写要绑定的主机名或地址。
网页雷达需要什么?
一共六项要求,最后一项正是选择这种方式的主要理由。
- 一条正常工作的读取链路
- 网页雷达只是同一个读取程序的第二个前端。如果读取程序没能解析出游戏数据,任何浏览器都不会显示内容
- 副机的局域网地址
- 其他设备连接时用的地址。通常是 192.168.x.x 或 10.x.x.x 这类
- 不是 localhost 的绑定地址
- 绑定在 localhost 的服务器只响应它所在的那台机器。绑定到局域网地址或所有网络接口,才能让其他设备访问到
- 一条入站防火墙规则
- Windows Defender 防火墙默认会拦截该端口。在专用网络配置文件下,为这个 TCP 端口加一条允许规则就够了
- 用来查看的设备在同一网络里
- 同一台路由器、同一个子网。用移动数据的手机连不上,访客网络通常也和主网络相互隔离
- 其他都不需要
- 不需要融合器、采集设备,也不需要第二根视频线。这条路完全绕开了显示问题
怎样设置网页雷达
先让桌面版雷达正常工作,因为下面每一步都假定它已经能用。
- 确认读取程序在副机上运行正常,桌面版雷达能显示游戏内容
- 用 ipconfig 查到副机的局域网地址,记下当前活动网卡的 IPv4 地址
- 在雷达软件的网页雷达设置里,把绑定主机设为这个地址;如果有“所有接口”选项,也可以选它。然后记下端口号
- 在副机上为这个 TCP 端口添加一条入站防火墙规则,作用范围限定为专用网络配置文件
- 先在副机本机上打开页面,地址是 localhost 加端口号。如果这一步都打不开,问题出在软件,不在网络
- 在手机上打开浏览器,输入副机的地址和端口号
- 给手机找个固定位置,放在显示器旁边的支架上,并关闭自动息屏
- 如果对局之间 socket 断开,就重启雷达并刷新页面,因为好几个公开实现会在一个回合或一次战局结束时关闭 socket
查地址和开放端口的命令
在副机上以管理员身份打开命令提示符,运行下面这些命令。
REM Find this machine's LAN address
ipconfig
REM Look for the active adapter's IPv4 Address, e.g. 192.168.1.42
REM Allow the web radar's port inbound, private networks only
netsh advfirewall firewall add rule name="Web radar" dir=in action=allow protocol=TCP localport=8080 profile=private
REM Then open this on the phone, substituting your own address and port
REM http://192.168.1.42:8080
REM Remove the rule when you are done
netsh advfirewall firewall delete rule name="Web radar"为什么网页雷达不需要融合器或采集卡
这两种盒子存在,都是为了解决同一个问题:把副机的画面送到你眼前。网页雷达的解决办法是干脆不在副机上生成画面;它生成的是一个网页,任何带浏览器的屏幕都能把它显示出来。立在显示器旁边的手机、平板、旧笔记本,以及第二块屏幕上的浏览器窗口,用起来都一样。没有视频链路,没有 EDID,没有接线顺序,也没有共同的刷新率上限,所以对只用雷达的配置来说,这是成本最低、最稳定可靠的显示方案。
说明
网页雷达做不到什么?
网页雷达是一张地图,而不是叠加层。它没法在游戏画面上画方框,因为它根本不碰游戏的视频链路,而这也正是它简单的原因。如果你想让透视(ESP)直接渲染在主显示器的游戏画面上,调网络设置是做不到的,你还得回到融合器或采集卡。
手机为什么连不上?
前两行覆盖了绝大多数求助。
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| 页面在副机上能打开,在手机上打不开 | 服务器绑定在 localhost 上,只响应它自己所在的机器 | 把绑定主机改成局域网地址或所有接口,然后重启雷达 |
| 手机连接超时 | Windows Defender 防火墙丢弃了入站连接 | 为该端口添加一条入站 TCP 允许规则,并确认网络被归类为专用网络,而不是公用网络 |
| 连接被立即拒绝 | 该端口上没有任何程序在监听——端口填错了,或者服务器没有运行 | 重新核对软件设置里的端口,并确认网页雷达功能确实已经启用 |
| 手机连着 Wi-Fi,但还是访问不到 | 路由器开了访客网络或客户端隔离(AP 隔离),或者手机处在一个被隔离的子网里 | 让手机和副机连接同一个网络,并为该网络关闭客户端隔离 |
| 页面能打开,但地图是空的 | 页面加载了,但 WebSocket 没有传来任何数据,或者读取程序不在对局中 | 先检查读取程序,因为如果桌面版雷达也是空的,这就不是网络问题 |
| 每回合结束时雷达卡住不动 | 好几个实现会在对局结束时关闭 socket | 重启雷达并刷新页面。这是文档里写明的行为,不是故障 |
| 电脑上很流畅,手机上一卡一卡 | Wi-Fi 信号质量差,或者更新间隔太短,把薄弱的无线链路塞满了 | 改用 5 GHz 频段或靠近路由器,然后逐步调大更新间隔,直到稳定为止 |
警告
还有谁能打开你的网页雷达?
你是在自己的机器上运行一个没有任何身份验证的网页服务器,所以同一网络里任何知道或猜到地址和端口的设备,都能打开这个雷达。这包括合租室友、连同一个 Wi-Fi 的客人,以及连在这个网络上的其他任何设备。好几个公开项目还更进一步,让你在路由器上做端口转发,方便朋友连接。动手之前先弄清楚这意味着什么。转发出去的端口可以从公网直接访问,而且除非你在它前面另外加了一层,否则流量就是明文 HTTP。另外,这个监听服务和读取你游戏的是同一套代码。只在局域网里用,让防火墙规则只作用于专用网络配置文件,不用的时候就把规则删掉。
让它一直开着之前,先检查这些
- 防火墙规则只作用于专用网络配置文件,而不是所有配置文件
- 路由器上没有做任何端口转发,除非你已经想清楚后果,并有意决定接受
- 副机所在的网络在 Windows 里被归类为专用网络
- 你知道用的是哪个端口,用完后能删掉这条规则
- 手机连在同一网络里,放在支架上,并且关闭了自动息屏
- 事先测试过桌面版雷达能正常工作,这样页面空白时可能的原因只有一个,而不是三个
关于网页雷达的常见问题
用网页雷达的话,还需要融合器吗?
不需要。网页雷达和融合器是针对同一需求的两种不同解法。网页雷达让你在另一块屏幕上看地图,融合器则让你在主屏上看叠加层。
手机能用移动数据访问吗?
不行,除非把服务器暴露到互联网上,而那意味着端口转发以及随之而来的一切后果。连同一个 Wi-Fi 的话,只需要一条防火墙规则。
该用哪个端口?
用你的软件所使用的端口就行;公开项目通常默认用 80 端口。如果这台机器上已经有别的程序占用了这个端口,就改软件的端口,不要去跟它抢。
把链接分享给朋友安全吗?
在你自己的局域网里,这取决于你家里有谁。通过互联网分享,就意味着向一个没有身份验证、还在读取你游戏内存的服务器开放端口,这种事不能随随便便就做。
在副机上运行网页服务器会影响游戏主机吗?
不会。它运行在副机上,通过你的网络和浏览器通信。游戏主机不参与其中,那边也没有多出任何能被它看到的东西。
资料来源
我们提到的那些公开雷达项目并不在我们核实过的来源清单里,防火墙规则和手机端步骤来自我们的实测。
继续阅读
仍然没有解决?在 Discord 提交工单
全部指南