1

这里有一个艰难的。

因此,我们正在尝试将 OpenTok 视频聊天应用程序从 Flash 升级到 WebRTC,并且在尝试实现“helloworld”WebRTC 示例时遇到了套接字错误。错误发生在我们尝试调用 session.connect() 时,而不是在我们请求 sessionId 或令牌时。错误基本上是这样的(session_id 和 partner_id 匿名):

SessionInfo Response: 
#document
  <sessions>​
    <Session>​
      <session_id>​asfgdagbasdfovnwoinvcwoinvoiandfvoinvoidnofgfdfgfgivniodfnv-sdfgdfgdfg-​&lt;/session_id>​
      <partner_id>​1234567890​&lt;/partner_id>​
      <create_dt>​Sun Sep 01 12:00:45 PDT 2013​&lt;/create_dt>​
      <session_status>​INFLIGHT​&lt;/session_status>​
      <media_server_url>​…​&lt;/media_server_url>​
      <p2p_server_url>​rtmfp://p2p101-oak.tokbox.com:1945/multicast​&lt;/p2p_server_url>​
      <media_server_hostname>​oms409-oak.tokbox.com​&lt;/media_server_hostname>​
      <messaging_server_url>​oms409-oak.tokbox.com​&lt;/messaging_server_url>​
    </Session>​
  </sessions>​
connectToMessenger
WebSocket error: undefined
TB.Socket Error :: The socket to oms409-oak.tokbox.com received an error: Unknown Error
TB.exception :: title: Connect Failed (1006) msg: TB.Socket Error :: The socket to oms409-oak.tokbox.com received an error: Unknown Error

关于可能导致这种情况的任何想法?我们正在测试最新版本的 Chrome 29,它发生在本地主机和我们的生产服务器上。所以它似乎不是防火墙。我能想到的一件事是我们在 Meteor/Node.js 框架上运行,该框架默认启用 websockets。该代码几乎是来自以下的样板 helloworld 示例:

http://tokbox.com/opentok/tutorials/hello-world/js/demo.html

我们成功获得了 sessionId 和令牌,只是 session.connect() 永远不会发生(因此,我们永远无法获得我们的连接对象或订阅事件侦听器)。

关于我们如何调试这个问题的任何想法?提前感谢您的帮助!阿比盖尔

4

2 回答 2

2

以典型的方式,在我花了两天时间解决一个 bug 之后,我非常沮丧,以至于我在 StackOverflow 上发布了一个问题,然后一个小时后解决了这个问题。

长话短说,OpenTok 帐户有一个未设置的“启用 WebRTC”选项。这是一个帐户管理员问题。长话短说……确保开发人员可以访问业务人员拥有的帐户!

于 2013-09-03T05:09:19.813 回答
1

我认为您可能使用的是 flash js 库而不是 webrtc 库。如果您使用 flash 加入了会话,它将无法使用 webrtc。

这是 webrtc 库:

<script src='https://swww.tokbox.com/webrtc/v2.0/js/TB.min.js'></script>

这是闪存库:

<script src='https://swww.tokbox.com/v1.1/js/TB.min.js'></script>

将 webrtc 和 flash 视为两个独立的产品,它们不互操作。

于 2013-09-04T18:20:11.713 回答