|
@@ -0,0 +1,166 @@
|
|
|
+// component/voice/voice.js
|
|
|
+
|
|
|
+Component({
|
|
|
+ /**
|
|
|
+ * 组件的属性列表
|
|
|
+ */
|
|
|
+ properties: {
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 组件的初始数据
|
|
|
+ */
|
|
|
+ data: {
|
|
|
+ show: true,
|
|
|
+ pushUrl: false,
|
|
|
+ pullUrls: [],
|
|
|
+ trtcConfig: {},
|
|
|
+ room: 0
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ attached() {
|
|
|
+ this.callback = (user={}) => {
|
|
|
+ console.warn('---user---', user,'---user---')
|
|
|
+ if (user.action === 'stopCall' && this.hasEnter) {
|
|
|
+ this.unpublishLocalAudio()
|
|
|
+ this.trtcRoomContext.exitRoom()
|
|
|
+ this.hasEnter = false
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (user.userId) {
|
|
|
+ this.enterAudioRoom(user)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ console.warn(user.noMute, '---noMute')
|
|
|
+ if (user.noMute) {
|
|
|
+ this.unpublishLocalAudio()
|
|
|
+ } else {
|
|
|
+ this.publishLocalAudio()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // console.log(getApp().globalData.pusher, 'getApp().globalData.pusher')
|
|
|
+ // if (getApp().globalData.pusher) {
|
|
|
+ // this.callback(getApp().globalData.pusher)
|
|
|
+ // }
|
|
|
+ console.log('attch')
|
|
|
+ getApp().addVoicePropsListener(this.callback)
|
|
|
+ },
|
|
|
+ detached() {
|
|
|
+ console.log('detached')
|
|
|
+ getApp().removeVoicePropsListener(this.callback)
|
|
|
+ // this.trtcRoomContext.exitRoom()
|
|
|
+ this.hasEnter = false
|
|
|
+ },
|
|
|
+ pageLifetimes: {
|
|
|
+ show() {
|
|
|
+ this.setData({show: true})
|
|
|
+ // this.trtcRoomContext = this.selectComponent('#trtcroom')
|
|
|
+ // if (getApp().globalData.audioUser) {
|
|
|
+ // this.enterAudioRoom(getApp().globalData.audioUser, true)
|
|
|
+ // }
|
|
|
+ // if (this.data.show) {
|
|
|
+ // this.enterAudioRoom()
|
|
|
+ // }
|
|
|
+ },
|
|
|
+ hide() {
|
|
|
+ clearTimeout(this.time)
|
|
|
+ this.setData({show: false})
|
|
|
+ },
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 组件的方法列表
|
|
|
+ */
|
|
|
+ methods: {
|
|
|
+ enterAudioRoom(user, noEnter) {
|
|
|
+ // if (this.hasEnter) {
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+ console.error('hasEnter', this.hasEnter)
|
|
|
+ this.hasEnter = true
|
|
|
+ getApp().globalData.audioUser = user
|
|
|
+ console.log(user, 'user')
|
|
|
+ this.setData({
|
|
|
+ trtcConfig: {
|
|
|
+ scene: 'rtc',
|
|
|
+ userID: user.userId, // 用户 ID,可以由您的帐号系统指定
|
|
|
+ // sdkAppID: '1400431163', // 开通实时音视频服务创建应用后分配的 SDKAppID
|
|
|
+ // userSig: user.sig, // 身份签名,相当于登录密码的作用
|
|
|
+ sdkAppID: "1400685498",
|
|
|
+ userSig: 'eJwtzcsOgjAQBdB-6RaDU2jLI3EhsrHRBdGNK2Po0IyvNAWJxvjvEmA5597c*bLj7hD26FnOohDYYrzJ4LOjhkZ*tejPd7wY9EJwnsV8brXmdnGODMu5AEggExBNSUcPHFQpnkopIJkU34784ApECjBvkB1e8MLJfWyLOAis06Wut4b0tVdL77RVTb35dGXby6o6rVfs9wdhLDRy',
|
|
|
+ template: 'custom', // 画面排版模式
|
|
|
+ }
|
|
|
+ }, () => {
|
|
|
+ this.trtcRoomContext = this.selectComponent('#trtcroom')
|
|
|
+ if (noEnter) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ console.log(this.trtcRoomContext, )
|
|
|
+ let EVENT =this.trtcRoomContext.EVENT
|
|
|
+
|
|
|
+ if (this.trtcRoomContext) {
|
|
|
+ this.trtcRoomContext.on(EVENT.LOCAL_JOIN, (event) => {
|
|
|
+ // 进房成功后发布本地音频流和视频流
|
|
|
+ console.error('进入房间')
|
|
|
+ this.successEnter = true
|
|
|
+ if (user.noMute) {
|
|
|
+ this.unpublishLocalAudio()
|
|
|
+ } else {
|
|
|
+ this.publishLocalAudio()
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ this.trtcRoomContext.on(EVENT.LOCAL_LEAVE, (event) => {
|
|
|
+ console.error('离开房间')
|
|
|
+ })
|
|
|
+
|
|
|
+ // 监听远端用户的音频流的变更事件
|
|
|
+ this.trtcRoomContext.on(EVENT.REMOTE_AUDIO_ADD, (event) => {
|
|
|
+ // 订阅(即播放)远端用户的音频流
|
|
|
+ let userID = event.data.userID
|
|
|
+ this.trtcRoomContext.subscribeRemoteAudio({
|
|
|
+ userID: userID
|
|
|
+ })
|
|
|
+ })
|
|
|
+ // this.trtcRoomContext.on(EVENT.LOCAL_AUDIO_VOLUME_UPDATE, event => {
|
|
|
+ // console.log(event)
|
|
|
+ // })
|
|
|
+ console.error('join')
|
|
|
+ this.trtcRoomContext.enterRoom({
|
|
|
+ roomID: getApp().globalData.roomId
|
|
|
+ }).then(() => {
|
|
|
+
|
|
|
+ console.log('成功进入房间')
|
|
|
+ }).catch((res) => {
|
|
|
+ console.error('room joinRoom 进房失败:', res)
|
|
|
+ this.hasEnter = false
|
|
|
+ })
|
|
|
+ let timer = null
|
|
|
+ timer = setInterval(() => {
|
|
|
+ if (!this.successEnter) {
|
|
|
+ this.trtcRoomContext.enterRoom({
|
|
|
+ roomID: getApp().globalData.roomId
|
|
|
+ }).then(() => {
|
|
|
+ console.log('成功进入房间')
|
|
|
+ }).catch((res) => {
|
|
|
+ console.error('room joinRoom 进房失败:', res)
|
|
|
+ this.hasEnter = false
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ clearInterval(timer)
|
|
|
+ timer = null
|
|
|
+ }
|
|
|
+ }, 3000);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ unpublishLocalAudio () {
|
|
|
+ this.trtcRoomContext && this.trtcRoomContext.unpublishLocalAudio()
|
|
|
+ },
|
|
|
+ publishLocalAudio () {
|
|
|
+ this.trtcRoomContext && this.trtcRoomContext.publishLocalAudio()
|
|
|
+ }
|
|
|
+ }
|
|
|
+})
|