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

因资源限制管控并发,如何查看Jitsi-Meet当前通话/房间数量?

Jitsi-Meet 实时活跃通话数查询与新通话限制方案

一、查询当前活跃通话/房间总数

以下是两种可靠的获取方式:

1. 利用Jicofo的REST API

Jicofo作为会议协调组件,提供了可用于查询活跃会议的未公开端点:

  • 执行命令调用API并统计会议数量:
    curl -s http://<JICOFO_IP>:8888/colibri/conferences | jq '. | length'
    
    替换<JICOFO_IP>为你的Jicofo服务地址,需提前安装jq工具解析JSON结果。
  • 返回的数字即为当前活跃的通话/房间总数。

2. 通过Prosody XMPP服务器查询

Prosody管理着Jitsi的房间数据,可通过两种方式获取:

  • 启用mod_admin_web模块后,访问http://<PROSODY_IP>:5280,在"Rooms"页面查看活跃房间数。
  • 使用Lua脚本直接查询(通过prosodyctl shell执行):
    local muc_host = "conference.your-domain.com"
    local rooms = prosody.hosts[muc_host].modules.muc.rooms
    print("Active rooms count: " .. #rooms)
    
    替换your-domain.com为你的Jitsi域名。

二、限制新通话发起

获取到活跃房间数后,可通过以下方式拦截新会议创建:

1. 前端逻辑拦截

修改Jitsi-Meet的前端代码,在会议创建前做阈值判断:

  • 在会议创建触发的函数中,先调用上述API获取当前房间数,若超过设定阈值则阻止创建并提示用户:
    async function canCreateConference() {
      try {
        const res = await fetch('http://<JICOFO_IP>:8888/colibri/conferences');
        const confs = await res.json();
        return confs.length <= 10; // 10为设定的阈值
      } catch (err) {
        console.error('Failed to check conference limit:', err);
        return false;
      }
    }
    
    // 在创建会议的流程中加入判断
    if (!(await canCreateConference())) {
      alert('当前同时进行的会议已达上限,请稍后再试');
      return;
    }
    

2. Jicofo插件拦截(更可靠)

编写自定义Jicofo插件,在会议创建请求阶段进行拦截:

  • 实现ConferenceRequestHandler接口,在handleConferenceRequest方法中统计活跃会议数,若超过阈值则返回拒绝响应。这种方式在服务端拦截,比前端更安全。

三、注意事项

  • Jicofo的REST API属于未公开接口,版本更新可能导致变化,需定期验证可用性。
  • 生产环境中要为API添加认证(比如Basic Auth),防止未授权访问。
  • Docker部署场景下,需确保Jicofo的8888端口已正确映射,或在容器内部执行查询命令。

内容的提问来源于stack exchange,提问作者Mihir Joshi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:52:39