Twilio视频&x2B;与Angular聊天

Twilio视频&x2B;与Angular聊天,angular,twilio,twilio-video,Angular,Twilio,Twilio Video,我正在使用Twilio视频聊天的医生咨询应用程序 应用程序中正在运行以下内容: 返回令牌的节点服务器 充当客户端的Android应用程序 面向医生的web应用 音频和视频工作正常,但我想在应用程序之间交换文本消息,以便显示连接或断开通知 以下是我的角度代码,用于建立连接: /** * @description Connect to a room * @param accessToken * @param options */ connectToRoom(accessToken: st

我正在使用Twilio视频聊天的医生咨询应用程序

应用程序中正在运行以下内容:

  • 返回令牌的节点服务器
  • 充当客户端的Android应用程序
  • 面向医生的web应用
  • 音频和视频工作正常,但我想在应用程序之间交换文本消息,以便显示连接或断开通知

    以下是我的角度代码,用于建立连接:

    /**
     * @description Connect to a room
     * @param accessToken 
     * @param options 
     */
    connectToRoom(accessToken: string, options): void {
        connect(accessToken, options).then(room => {
            this.roomObj = room;
    
            if (!this.previewing && options['video']) {
                this.initializeLocalConnection();
            }
    
            this.roomParticipants = room.participants;
    
            room.participants.forEach(participant => {
                this.attachParticipantTracks(participant);
            });
    
            room.on('participantDisconnected', (participant) => {
                this.participantDisconnected(participant);
            });
    
            room.on('participantConnected', (participant) => {
                this.initializeRemoteConnection(room, participant);
            });
    
            // When a Participant adds a Track, attach it to the DOM.
            room.on('trackPublished', (track, participant) => {
                this.attachTracks([track]);
            });
    
            // When a Participant removes a Track, detach it from the DOM.
            room.on('trackRemoved', (track, participant) => {
                this.detachTracks([track]);
            });
    
            room.once('disconnected', room => {
                this.disconnectRoom(room);
            });
        }, (error) => {
            alert(error.message);
        });
    }
    
    我用以下代码调用此函数:

    this.dataTrack = new LocalDataTrack();
    
    this.connectToRoom(this.access_token, {
                name: this.room_name,
                //tracks: [this.dataTrack],
                audio: true,
                video: { height: 720, frameRate: 24, width: 1280 },
                bandwidthProfile: {
                    video: {
                        mode: 'collaboration',
                        renderDimensions: {
                            high: { height: 1080, width: 1980 },
                            standard: { height: 720, width: 1280 },
                            low: { height: 176, width: 144 }
                        }
                    }
                },
            });
    
    我读到我需要使用数据跟踪。为了接收消息,我添加了以下事件:

    participant.on('trackAdded', track => {
      console.log(`Participant "${participant.identity}" added ${track.kind} Track ${track.sid}`);
      if (track.kind === 'data') {
        track.on('message', data => {
          console.log(data);
        });
      }
    });
    
    但如果我试图从代码中删除以下注释,音频和视频将停止工作。代码中没有错误

    //tracks: [this.dataTrack],
    

    这里是Twilio开发者福音传道者

    当您添加行
    曲目:[this.dataTrack]
    时,您正在告诉Twilio Video,这些是您想要包含的唯一曲目,并且会覆盖SDK请求摄像头和麦克风权限

    在这里你可以做两件事。您可以使用
    navigator.mediaDevices.getUserMedia
    自己请求视频和音频曲目,并在阵列中传递这些曲目

    或者,您可以等到房间已连接,然后发布数据轨迹

    connectoroom(accessToken:string,options):void{
    连接(accessToken,选项)。然后(房间=>{
    this.roomObj=房间;
    this.roomObj.publishTrack(this.dataTrack);
    //等
    })
    }
    
    好的,谢谢,我试试这个