这是我想要连接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>
我尝试了其他一些变种,添加了事件处理程序等,但没有任何对我有用。 感谢任何帮助。如果可能,请提供示例代码。谢谢!
答案 0 :(得分:0)
问题是您是为每个页面加载创建一个新会话。这意味着每个访问者都会获得不同的会话ID,因此这两个访问者永远无法相互订阅。
相反,您需要一种方法来存储生成的会话ID(例如数据库)。然后,您考虑如何将访问者放在同一会话中,例如使用唯一“房间”的URL。如果页面加载应该提供先前生成的会话ID,请从数据库中读取值。