CodeIgniter集成Vonage(Tokbox)生成session和token后未生成stream ID如何解决
问题根因
- Stream ID 不是服务端创建Session时生成的:Vonage (Tokbox) 的流ID是客户端(Web/移动端)拿到Session ID和Token、成功加入会话并发布音视频流之后,才会由Vonage服务生成的资源标识。你当前仅在服务端完成了Session创建和Token生成,没有任何客户端接入发布流,自然不存在Stream ID,调用
getStream()肯定无法获取结果。 - 代码存在语法问题:你调用
$opentok->getStream($sessionId, $streamId)时,$streamId变量完全没有提前定义赋值,属于未定义变量,就算当前会话有存在的流,传空值也无法查询到对应流信息。 - 无效代码冗余:你连续调用了3次
createSession()方法,前两次创建的Session实例会被最后一次的结果直接覆盖,属于无用代码,建议根据你的业务需求只保留对应配置的Session创建逻辑即可。
正确实现步骤
- 服务端仅需要生成业务需要的Session ID和对应权限的Token,返回给客户端使用
- 客户端集成对应端的Vonage SDK,传入Session ID和Token加入会话,调用发布流接口上传本地音视频
- 流发布成功后,客户端可以从发布成功的回调事件中拿到当前流的Stream ID,若服务端需要使用该ID,可由客户端上报到服务端
- 你也可以在确认已有客户端发布流之后,服务端调用
$opentok->listStreams($sessionId)方法获取当前会话下所有存在的流列表,遍历即可得到每个流的Stream ID
内容的提问来源于stack exchange,提问作者Sandip Raut
相关产品推荐
相关产品推荐

