我使用opentok创建了在线教育视频门户。 学生人数应该看老师的视频。老师也会看到所有相关学生的视频。 使用以下代码我可以阻止订阅自己: -
function subscribeToStreams(streams) {
for (var i = 0; i < streams.length; i++) {
// Make sure we don't subscribe to ourself
if (streams[i].connection.connectionId == session.connection.connectionId) {
return;
}
//if (streams[i].connection.connectionId != session.connection.connectionId) {
// Create the div to put the subscriber element in to
var container = document.getElementById('videoContainer');
var div = document.createElement('div');
var id = 'stream' + streams[i].streamId;
div.setAttribute('id', id);
container.appendChild(div);
// Subscribe to the stream
session.subscribe(streams[i], div.id);
div.style.width = '20%';
div.style.height = '20%';
div.style.left = '80%';
//}
}
}
我想阻止学生看到其他学生视频。 学生应该只能看到教师的视频。
帮助将不胜感激。 感谢
答案 0 :(得分:1)
执行此操作的最佳方法是使用令牌。假设您为每个用户(您应该)生成令牌,您必须通过设置connection_data属性将数据放入每个用户的令牌中。 Example in Ruby。我会将字符串“student”或“teacher”设置为令牌的connection_data。
在streamCreated事件中,您可以在事件处理程序中查找与流关联的connection_data:event.stream.connection.data
在学生方面,您只需检查连接数据,以便在获得streamCreated事件时仅订阅教师的流:
function(e){
if( e.stream.connection.data == "teacher" ){
// Create the div to put the subscriber element in to
var container = document.getElementById('videoContainer');
var div = document.createElement('div');
var id = 'stream' + streams[i].streamId;
div.setAttribute('id', id);
container.appendChild(div);
// Subscribe to the stream
session.subscribe(streams[i], div.id);
}
}
在老师方面,他可以简单地订阅每一个传入的流。
希望有所帮助,
祝你好运!