我使用离子3角5创建了一个混合应用程序。这个应用程序使用opentok进行视频通话。我在我的mac上安装了一个用于opentok的python服务器,它工作正常。不,我试图通过混合应用程序连接到同一台服务器。我已经生成了一个会话ID表格opentok网站。我还在同一个站点生成了一个发布者令牌,并在应用程序中使用它。我能够看到两个流,但是一旦客户端的发布者初始化应用程序崩溃。
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
declare var OT:any;
declare var Cordova: any;
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
session: any;
publisher: any;
apiKey: any;
sessionId: string;
token: string;
constructor(public navCtrl: NavController) {
this.apiKey = '46271262';
this.sessionId = '1_MX40NjI3MTI2Mn5-
MTU1MDU2MTE3NDk4OX5RcmQzSmQ2Z2VzZnl4RmNXNEY5ckJQc0V-fg';
this.token =
'myTokenGoesHere';
}
startCall() {
this.session = OT.initSession(this.apiKey, this.sessionId);
this.session.on({
streamCreated: (event) => {
this.session.subscribe(event.stream, 'subscriber');
this.session.subscribe.subscribeToVideo = true
OT.updateViews();
},
streamDestroyed: (event) => {
console.log(`Stream ${event.stream.name} ended because
${event.reason}`);
OT.updateViews();
}
});
this.session.connect('myTokenGoeshere', () => {
this.publisher = OT.initPublisher('publisher');
alert("Publish Started")
this.session.publish(this.publisher);
});
}
}
TokBox Developer Evangelist在这里。
看起来您正在发布而不验证会话是否连接没有错误。最近在Cordova OpenTok Plugin中修复了错误,修复了session.connect
方法的错误处理程序问题。您可以将Ionic代码修改为以下内容:
this.session = OT.initSession(apiKey, sessionId);
this.publisher = OT.initPublisher('publisher');
this.session.on({
streamCreated: (event) => {
this.session.subscribe(event.stream, 'subscriber');
},
streamDestroyed: (event) => {
console.log(`Stream ${event.stream.name} ended because ${event.reason}`);
},
sessionConnected: event => {
this.session.publish(publisher);
},
});
this.session.connect(this.token, (error) => {
if (error) {
console.log('There was an error connecting');
}
});
我还继续更新了OpenTok-Ionic-Samples和OpenTok-Cordova-Samples repos中的示例,这些示例反映了错误修复的示例代码更改。