我的移动应用程序使用OpenTok时遇到问题(我使用Phonegap并在Android上测试应用程序)。
我已成功创建了发布者流和订阅者流。
当我关闭会话并尝试重新打开时,有几个问题:
正如你所看到的,我尝试了不同的方法来完全关闭流:disconnect(),unpublish(),publisher.destroy(),但它不能按我的意愿工作。
这是我的.js脚本:
function connexionOpenTok() {
var sessionSub;
var sessionPub;
var publisher;
$('#visioStopBtn').click(function () {
console.log('Arret de la Visio...');
$('#Collaboratif_mobilecontainer').show();
$('#visioContainer').hide();
if(sessionPub) {
if (publisher) {
sessionPub.unpublish(publisher);
}
sessionPub.publisher.destroy();
sessionPub.disconnect();
sessionPub.forceDisconnect();
sessionPub.forceUnpublish();
}
if(sessionSub) {
sessionSub.disconnect();
sessionSub.forceDisconnect();
}
});
var subDiv = '<div id="visioSubscriber"></div>'
var subPub = '<div id="visioPublisher"></div>'
$('#visioContainer').append(subDiv).append(subPub);
var apiKey = "KEY";
var sessionId = "ID";
var subToken = 'TOKEN';
var pubToken = 'TOKEN';
// Initialize session, set up event listeners, and connect
var width = $(window).width();
var height = $(window).height();
//publisher
setTimeout(function (){
sessionPub = OT.initSession(apiKey, sessionId);
sessionPub.connect(pubToken, function(error) {
publisher = OT.initPublisher("visioPublisher", {width: width/5, height: height/5, zIndex: 3} );
sessionPub.publish(publisher);
});
}, 1000);
//subscriber
setTimeout(function (){
sessionSub = OT.initSession(apiKey, sessionId);
sessionSub.once("streamCreated", function(event) {
sessionSub.subscribe(event.stream,"visioSubscriber", {width: width, height: height*0.8, zIndex: 2} );
});
sessionSub.connect(subToken, function () {
});
}, 5000);
}
这是我的CSS:
#visioSubscriber {
position:absolute;
z-index:2;
bottom: 65px;
left: 0px;
}
#visioStopBtn {
position:absolute;
z-index:10;
width: 85%;
margin: 5px 3% 5px 3%;
bottom : 8px;
}
#visioPublisher {
display:block;
z-index: 3;
position: absolute;
bottom: 65px;
left: 3%;
}
#visioContainer {
background-color: black;
width : 100%;
height: 100%;
z-index: 1;
position: absolute;
bottom:0px;
}
这是关于Opentok的html的一部分:
<div id="visioContainer">
<a data-role="button" class="button"
id="visioStopBtn" data-corners="true" data-icon="none" data-iconpos='nowhere' data-mini="false" data-theme="b">
ARRETER LA VISIO
</a>
</div>
答案 0 :(得分:1)
在JS库(由TokBox正式维护)上,所有发布者和订阅者应在调用session.disconnect()
后自动清理。 Cordova(又名PhoneGap)是一个社区维护的项目(不是由TokBox正式维护),悬挂的发布者/订阅者似乎是cordova插件中的一个错误。
几天前有一个拉取请求,您是否可以尝试更新cordova插件并查看问题是否消失? https://github.com/songz/cordova-plugin-opentok/pull/79
如果没有,您应该在项目页面上提出问题:https://github.com/songz/cordova-plugin-opentok/issues