配置 AppRtc 支持多人加入房间

-- 配置 AppRtc 支持多人加入房间

基于 AppRtc 搭建的 webrtc 音视频通话默认只支持一对一的音视频通话,前期我们在没有开发出来自己的房间、信令服务器的情况下,要想开发测试多人音视频通话的话,就需要自己去修改 server 的相关配置, 以让其允许多人同时加入房间,否则 server 将返回房间已满的错误信息;对房间人数的限制有两方面, RoomServer 和 collider server,我们只需要将其对允许同时加入房间的人数进行相应的提高就行了,如改成 3 人:

  • 修改 RoomServer 对人数的限制

    修改 apprtc 编译生成的 out/app_engine/apprtc.py 文件,首先自定义一个全局变量,限定房间人数为 3:

    MAX_USER_COUNT = 3
    

    然后在新终端加入房间时使用此值进行判断,即:

    第 399 行:

        occupancy = room.get_occupancy()
        if occupancy >= MAX_USER_COUNT:
          error = constants.RESPONSE_ROOM_FULL
          break
    

    第 422 行:

        if memcache_client.cas(key, room, constants.ROOM_MEMCACHE_EXPIRATION_SEC):
          logging.info('Added client %s in room %s, retries = %d' \
              %(client_id, room_id, retries))
    
          if room.get_occupancy() == MAX_USER_COUNT:
            analytics.report_event(analytics.EventType.ROOM_SIZE_2,
                                   room_id,
                                   host=request.host)
          success = True
          break
    

    第 595 行:

        if room is not None:
          logging.info('Room ' + room_id + ' has state ' + str(room))
          if room.get_occupancy() >= MAX_USER_COUNT:
            logging.info('Room ' + room_id + ' is full')
            self.write_response('full_template.html')
            return
    
  • 修改对 Collider 对人数的限制

    修改 apprtc 目录下 /src/collider/collider/room.go 文件,修改 maxRooCapacity 为 3,同 RoomServer 对人数的限制:

    const maxRoomCapacity = 3
    

    注:Collider 需要重新编译。

最后,分别重启 RoomServer 和 Collider 既可,三人同时加入同一个房间 ID,将不再出现 Room Is Full 的报错,但是 客户端需要自己实现 多个 PeerConnection 去获取第三人的音视频数据并播放。



作者:Gobert
链接:https://www.jianshu.com/p/08040315f996
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

猜你喜欢

转载自my.oschina.net/u/2336787/blog/1810054
今日推荐