我有一个问题,使用OpenTok为我的移动应用程序(我使用Phonegap,我在Android上测试应用程序).
我已成功创建了发布者流和订阅者流.
当我关闭会话并尝试重新打开它时,有几个问题:
>似乎上一个流仍然在运行(我可以看到2个与子目录会话相关联的活动流与Chrome检查元素工具),但视频没有显示在屏幕上,只有音频处于活动状态;
>当我第二次关闭会话时,发布者流仍然显示在应用程序上.
正如您所看到的,我尝试了不同的方法来完全关闭流: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>
解决方法:
在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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。