OpenTok视频聊天

时间:2014-01-31 05:22:48

标签: javascript opentok

我使用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%';
                //}
            }
        }

我想阻止学生看到其他学生视频。 学生应该只能看到教师的视频。

帮助将不胜感激。 感谢

1 个答案:

答案 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);
  }
}

在老师方面,他可以简单地订阅每一个传入的流。

希望有所帮助,

祝你好运!