web sdk 3.0.0 邀请加入频道时报错

我使用的web sdk 3.0.0
在join的方法中uid写了自定义的uid,我的uid是我系统中的用户id,能保证唯一性。

const clientInit = (client, options) => {
	return new Promise((resolve, reject) => {
		client.init(options.key, () => {

			let lowStreamParam = RESOLUTION_ARR[options.videoProfileLow];
			
			client.join(options.key,options.channel,options.uid,uid => {

				console.log(uid, 'brown', `User ${uid} join channel successfully`);
				
				client.setLowStreamParameter({
					width: lowStreamParam[0],
					height: lowStreamParam[1],
					framerate: lowStreamParam[2],
					bitrate: lowStreamParam[3]
				});
				// Create localstream
				resolve(uid);
			},err => {
				reject(err);
			});
		});
  	});
};

我遇到的问题是当创建一个视频通道后,邀请一个人加入视频,第一次是能连通视频的。但是被邀请人退出视频,创建人在不关闭视频通道情况下再次邀请这个人视频,被邀请人点击进入后,创建人看不到被邀请的视频流。

我跟踪代码发现再次邀请后创建方stream-added事件接收到stream在订阅时失败了。报错如下:
WechatIMG1401

能否提供邀请方的完整的 Console log 文件?我们来看一下

ok,附件即为发起方日志和接收方日志,谢谢,这个问题困扰了我一天。也检查了好久自己的代码,逻辑应该没有问题。

console.log.zip (8.6 KB)

有结果了吗?

稍等,暂时还没有确定问题,我们先查下后台服务器日志。

如果join的时候uid什么也不填写使用声网自带的uid就不会有这个情况。

可是这个uid我还需要用的。因为只有使用自定义的uid才能获取到我们系统的头像用于音频通话。

web sdk并没有像原生ios或者android一样的注册本地用户的方法,如果不适用自定义的uid,是无法将频道内的uid与我们自己的头像关联起来

是我哪个地方有错误吗?被邀请方退出时少调用api了?

还在排查,有结论了会同步给你的。请耐心等待哈

不好意思,是 string uid 导致的一个 bug,我们会尽快修复该问题。你先替换为 int 型 uid 吧,可以规避这个问题。
另外,由于 string 型 uid 需要完成映射,出于稳定性考虑,我们也更建议使用 int 型 uid。

哦。但是web版本没有像移动端注册本地用户的api,我怎么将我的用户编号和这个int uid映射上呢?如果映射不上,我没办法在语音通话的UI上显示用户头像。

可否提供一个方案?

自行在业务层实现映射啊…int 型 uid 也可以自定义,定义一个 string 型的变量,给每个 int 型 uid 关联一个对应的你们需要的 string 型值就可以了啊。