直播:后台 JWT 推流、前台画中画;WebRTC 服务与 Nginx WebSocket 代理

Made-with: Cursor
This commit is contained in:
whm
2026-03-25 15:00:14 +08:00
parent b83ec91b1a
commit 7811adca66
1050 changed files with 146524 additions and 37 deletions

22
server/vendor/github.com/wlynxg/anet/README_zh.md generated vendored Normal file
View File

@@ -0,0 +1,22 @@
针对Android 11之后对访问系统MAC地址的权限进行了修改的问题导致普通应用在调用`NETLINK`套接字时会遇到以下几个主要问题:
- 不允许对`NETLINK`套接字进行`bind`操作。
- 不允许调用`RTM_GETLINK`功能。
详细说明可以在此链接找到https://developer.android.com/training/articles/user-data-ids#mac-11-plus
由于上述两个原因导致在安卓环境下使用Go net包中的`net.Interfaces()``net.InterfaceAddrs()`时会抛出`route ip+net: netlinkrib: permission denied`错误。
具体 issue 可见https://github.com/golang/go/issues/40569
为了解决在安卓环境下使用Go net包的问题我们对其源代码进行了部分改造以使其能够在Android上正常工作。
对于`net.InterfaceAddrs()`,我已经完全解决了其中的问题;
对于`net.Interfaces()`,我只解决了部分问题,目前仍存在以下问题:
- 只能返回具有IP地址的接口。
- 不能返回硬件的MAC地址。
但是修复后的`net.Interfaces()`函数现在与Android API的`NetworkInterface.getNetworkInterfaces()`保持一致,在大多数情况下可正常使用。
具体修复逻辑包括:
- 取消了`NetlinkRIB()`函数中对`Netlink`套接字的`Bind()`操作。
- 根据`RTM_GETADDR`返回的Index号使用`ioctl`获取其网卡的名称、MTU和标志位。