配置 AppRtc 支持多人加入房间
2017-10-15 本文已影响641人
Gobert
-- 配置 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 去获取第三人的音视频数据并播放。