前往端口 8443 的全程 WebRTC API 请求
- 更新所有 WebRTC API 路由以使用媒体 。{域}: 8443 - 不再将Traefik用于WebRTC终点 - 匹配媒体API和WebSocket配置
所有媒体服务请求到端口 8443 (通过Traefik)
- 更新所有媒体 API 路线以使用媒体 。{域}: 8443 - 不再使用Traefik媒体服务 - API和WebSocket都直接去8443港 - 内部。{域}像以前一样继续通过Traefik
连接8443(外部)端口,该端口通向节点30843
- 路由器外接8443至k1m1节点30843 -浏览器使用media.kamocrm.com:8443 - 内部节点港为30843 (Kubernetes 有效范围)
为 WebSocket 连接到 MediaService 端口 8443
- 更新了WebSocket连接,使用media.kamocrm.com:8443 - 仅用于WebSocket交通的旁通车 - 使用直接连接媒体服务的HTTPS/HTTP1.1 - API电话通过Traefik继续使用标准路径
删除 HTTP/2 兼容性的 WebSocket 运输限制
-浏览器WebSocket API不支持HTTP/2(RFC 8441未执行) - 原生WebSocket需要HTTP/1.1 升级失败于 HTTP/2 - 让SockJS自动选择运输(xhr -- -- 流/xhr -- -- 通过HTTP/2) - 修复与 HTTP/2 的 WebSocket 连接失败
仅使用 WebSocket 运算( 残疾 XHR 投票)
- 将SockJS运输从[websocket,xhr-streaming,xhr-poling]改为[websocket] - 取消回落投票 - 纯网络锁接力 - 如果WebSocket不起作用,而不是有辱人格,那么失败的速度会很快
将 WebSocket 直接连接到媒体.kamocrm.com
- 还原到原始方法:连接到媒体。 * 子域直接 - 消除不必要的同源复杂性 - 从中间软件被删除/ws绕行(不需要) - 内部入侵鲁特的路线被取消 - 媒体服务CORS已经允许所有来源 - 更简单更清洁的解决方案
从 kamowsmedia- service 中删除明确的命名空间引用
- 两种服务同名空间(kamo) - 不需要明确的名称空间参考 - 避免潜在的跨名称空间问题
从下一个删除/ws重写 。 配置(由Traefik处理)
- 已删除 Next.js 为/ws 路径重写 - 现由Traefik IngressRoute处理的WebSocket线路 - Traefik 内部路线.kamocrm.com/ws - > 直接媒体服务
通过Traefik直接向MediaService提供路线/ws请求
- 为入侵鲁特的路径增加专用路线 - 内部路线.kamocrm.com/ws - > 直接媒体服务 - 在WebSocket支助中使用与媒体路线相同的服务器运输 - 用于 WebSocket 连接的 Bypasses Next.js(Next.js 重写不支持 WS) - 更具体的路线首先与一般路线相匹配
允许/ws WebSocket 端点, 而无需认证重定向
- 将路径添加到中间软件绕行 - SockJS 需要连接到/ws/info而不重定向 - WebSocket连接仍然有 *** cookie - 解决WebSocket连接超时问题
更改同源的 WebSocket 连接
- 从media.kamocrm.com改为同源(内部.kamocrm.com) - 避免出现交叉来源的WebSocket连接问题 - 添加 Next.js 重写规则到代理/ws 到 Media Service - 浏览器将连接到内部.kamocrm.com/ws - Next.js将代理到媒体.kamocrm.com...
为 WebRTC 端点添加 API 代理路由
- 在媒体服务中添加/api/webrtc/配置代理 - 为Janus认证添加了/api/webrtc/token代理 - 增加/api/webrtc/呼叫/启动、回答、终端代理 - 遵循与/api/媒体代理相同的模式 - 启用来自 kamo- 内部前端的 WebRTC 呼叫
解析构建错误 - 将 PhoneOff 替换为 CallEnd
- 手机图标在@mui/icons-materi中不存在 - 使用CallEnd,这是正确的MUI图标 - 删除未使用的重复文件(ChatBox With WebRTC、VideoCallView、使用JanusWebRTC) - 建设现在应该成功
完整的对等 WebRTC 呼叫信号
- 添加使用WebRTC钩并配有完整的信号支持 - 综合WebSocket信号(出价、答案、ICE候选人) - 添加带有答/解码按钮的来电通知 - 更新ChatBox,动态高度可调用UI - 从使用ChatWebSocket进行信号输出的STOMP客户端 - 支持音频、视频和屏幕共享通话 - 在接收到的电话中自动呼叫用...
为音频/视频通话添加 Janus WebRTC 集成
- 为WebRTC呼叫管理添加了JanusWebRTC钩 - 为聊天录像显示增加视频CallPanel组件 - 与ChatBox集成,用于无缝呼叫体验 - 支持音频通话、视频通话和屏幕共享 - 适当的视频显示宽度比(16:9) - 呼叫控制:哑声、视频切换、终端呼叫 - 在STUN/TURN支持下使用 kamocrm....
在 SockJS 恢复 WebSocket 传输
- 恢复使用websocket运输(不是投票) - WebSockets是标准的,应该正常工作 - 注重确定实际的WebSocket连接问题
在 SockJS 跳过 WebSocket 运输以避免 HTTP/2 问题
- 使用xhr-流线和xhr-波程运输,而不是网络锁 - 这些运输与HTTP/1.1和HTTP/2同时工作,不需要WebSocket升级 - 避免HTTP/2扩展的CONNECT问题并改进标题转发问题 - /ws/info 请求在 HTTP/2 中及时出局(499起),使 SockJS 无法连接
配置 SockJS 运输处理 HTTP/2 WebSocket 升级问题
- 明确配置SockJS运输订单,以选择WebSocket,然后回落到xhr-流/xhr-波 - HTTP/2 WebSocket升级可能失败,SockJS将自动回落到HTTP/1.1相容的运输上 - 这将解决浏览器使用 HTTP/2 时的 WebSocket 连接超时
从 STOMP 中删除不存在的“ 活动” 属性 客户端记录
- STOMP (英语) 客户端没有“ 活动” 属性 - 只检查“ 连接” 属性, 该属性为正确的状态指标
从 STOMP 客户端中删除不支持的 WebSocketError 处理器
- 在WebSocketError上不是客户端选项中的有效属性 - SockJS 错误处理器( 错误, 关闭) 已经提供了错误处理
添加全面的 WebSocket 错误处理和记录
- 添加SockJS出错处理器(打开、打开、关闭)以捕获连接故障 - 添加连接超时检测(10秒)以识别无声故障 - 在WebSocketError处理器上添加到STOMP客户端 - 改进记录,以确定WebSocket连接为何没有建立 - 这将有助于识别 SockJS /ws/info 请求是否失败
删除错误的 HTTPS 代理工作
- 绕过证书验证的还原更改 - 证书由自动证书服务(让我们加密)签发,而不是自签名 - 需要调查验证失败的原因
使用接受自签名证书的代理 HTTPS
- 恢复使用HTTPS(不是HTTP) - 添加 HTTPS 代理, 拒绝 未经授权: 自签证书有假 - 这使得服务器端 Next.js 路由连接到 https://media.kamocrm.com - 适用于所有媒体API线路
为 Media Service 使用 Kubernetes 服务名来避免 SSL 证书问题
- 服务器侧 Next.js 路由现在使用QQ - 这可以避免在连接 https://media.kamocrm.com 时出现自签证书错误 - 客户端请求仍然使用外部 https://media.{domain} URL 网络 - 适用于所有媒体API线路:会话/聊天、会话/[guid]、会话/[guid]/消息、信...
删除截获请求的旧/api/ 安全/ 媒体/ 路线
- 旧路线已转发给APIService,它不再有媒体终点 - 所有媒体要求应直接通过/api/媒体/途径进入媒体服务处 - 删除: - 删除: ...
为 MediaService 会话创建添加详细错误记录
- 调用日志媒体服务 URL - 日志回复信头 - 强化有全部错误细节的错误记录 - 在调试错误响应中包含 URL
返回到动作/ 检查出@ v4 以匹配其他 Next.js 项目
- 删除导致绞刑的复杂的手工取出逻辑 - 使用标准动作/ 检查出@v4, 如 kamo- login 和 Kamo- register - 简化多克建筑上下文以使用.而不是env var - 添加退出以部署 k8s 显示访问的任务
使用带有超时的浅层克隆来防止挂起
- 使用 -- -- 深度 1 为更快的克隆 - 增加超时(浅重120分,全重300分) - 如果浅度失败, 倒向完全克隆 - 必要时在浅层克隆后获取具体承诺
在 git 克隆前更改为有效的目录以避免工作目录出错
- 在删除/克隆工作空间之前更改为/tmp或/ - 只有在目录存在但不是 git repo 时才删除 - 防止“ 无法读取当前工作目录” 出错
Use hardcoded repository URL and set GITHUB_WORKSPACE env var
- Use direct repository URL to avoid DNS/hostname resolution issues - Set GITHUB_WORKSPACE environment variable for subsequent steps - Use env var in Docker bui...
Use git clone directly instead of relying on empty workspace
- Clone repository using git directly with repository URL - Handle both fresh clone and existing repository cases - Use working-directory for Docker build actio...
Simplify all checkout steps - remove git operations that hang
- Remove git fetch/reset/clean from deploy jobs - Forgejo runner already has code checked out - Just verify GITHUB_WORKSPACE is valid
Simplify checkout step - remove git clone that was hanging
- Remove git clone logic that was causing 20+ minute hangs - Forgejo runner already has code checked out, just verify directory - Remove unnecessary git fetch/r...
Improve checkout and Docker build context handling
- Add proper repository cloning if not already checked out - Verify Dockerfile exists before building - Use absolute paths for Docker build context - Fix workin...
Replace actions/checkout with manual git checkout to avoid DNS issues
- Replace actions/checkout@v4 with manual git checkout commands - Forgejo runner already has code checked out, just need to ensure clean state - Fixes DNS looku...
Add direct MediaService routes via media.{domain} for WebSocket support
- Create new /api/media/* routes that forward directly to media.{domain} - These routes bypass APIService to allow secure WebSocket connections - MediaService r...
Add logging for subscription request to backend
- Log when subscription request is sent to /app/chat/subscribe - Helps verify if subscription requests are reaching the backend
Add detailed logging for subscribe function
- Log when subscribe() is called and current connection state - Log client existence and connection status - Helps diagnose why subscriptions aren't being creat...
Add detailed WebSocket connection logging
- Enhanced logging for WebSocket connection success/failure - Log connection frame details on successful connection - Log detailed STOMP error information - Hel...
Extract large IDs from raw JSON to prevent JavaScript precision loss
- Extract memberID, userID, orgID, and securityOrgId from raw JSON string before parsing - Prevents precision loss for IDs > Number.MAX_SAFE_INTEGER (9007199254...