OpenTok会话连接问题(Javascript / Rails应用程序)

时间:2015-07-22 22:09:16

标签: javascript ruby-on-rails session javascript-events opentok

这是我想要连接2个用户创建的基本视频聊天。 在对opentok教程进行了一些研究之后,我能够在没有Server SDK的情况下创建双向聊天。 但是当我创建rails服务器端应用程序时,我无法进行双向聊天,而是链接仅创建单个会话而且不接受任何其他用户。 我已将gem opentok包含在Gemfile中。

问题: 即使在另一个选项卡中存在现有屏幕后,也只会出现单个视频分区。即,我打开链接,我得到一个视频屏幕,当我在另一个选项卡中打开相同的链接时,我得到一个视频屏幕,而不是两个。(会话连接的一些问题)

来自控制器的代码:

class AuthController < ApplicationController

require "opentok"


def index
  config_opentok

  session = @opentok.create_session
  @id = session.session_id
  @token = session.generate_token

end

private

  def config_opentok
    if @opentok.nil?

      @opentok = OpenTok::OpenTok.new API_KEY, 'SECRET'

    end
  end

end

我在Opentok仪表板上输入了正确的Api_key和Secret。

代码来自视图:

<div id='myPublisherDiv'></div> 
<div id='subscribersDiv'></div> 

<script src='//static.opentok.com/v2/js/opentok.min.js'></script> 
<script> 


  var apiKey = API_KEY; // used correct Api_key in APP
  var sessionId = '<%= @id %>'; 
  var token = '<%= @token %>';
  var session = OT.initSession(apiKey, sessionId); 
  session.on({ 
      streamCreated: function(event) { 
        session.subscribe(event.stream, 'subscribersDiv', {insertMode: 'append'}); 
      } 
  }); 
  session.connect(token, function(error) {
    if (error) {
      console.log(error.message);
    } else {
      session.publish('myPublisherDiv', {width: 320, height: 240}); 
    }
  });
</script> 

我尝试了其他一些变种,添加了事件处理程序等,但没有任何对我有用。 感谢任何帮助。如果可能,请提供示例代码。谢谢!

1 个答案:

答案 0 :(得分:0)

问题是您是为每个页面加载创建一个新会话。这意味着每个访问者都会获得不同的会话ID,因此这两个访问者永远无法相互订阅。

相反,您需要一种方法来存储生成的会话ID(例如数据库)。然后,您考虑如何将访问者放在同一会话中,例如使用唯一“房间”的URL。如果页面加载应该提供先前生成的会话ID,请从数据库中读取值。