Chromecast API 未调用 sessionListener() 回调

Chromecast API not calling sessionListener() call back

我正在构建 Chromecast Sender 应用程序,我可以成功投射会话。但是我只能投一次。当我断开连接时,我的 sessionListener 回调永远不会触发,这是有问题的,因为那是我设置 sessionUpdate 侦听器的地方。如果没有它,就不可能知道会话何时结束以重置会话并进行任何清理,这意味着我无法重铸任何东西,因为我无法知道会话是否有效。

据我所知,问题出在 cast_sender.js 中,它被方便地混淆了,所以我可能是错的。

我正在按如下方式设置我的 ApiConfig:

 apiConfig = new _chrome.cast.ApiConfig(
   sessionRequest,
   _sessionListener.bind(this),
   _receiverListener.bind(this));

_receiverListener 按预期触发,我已将 cast_sender.js 调试到可以看到我的函数 _sessionListener 被传入并在 [= 的第 837 行正确设置的地步15=],此处:

835 chrome.cast.dd = function(a, c, d, e, f) {
836   this.sessionRequest = a;
837   this.sessionListener = c;
838   this.receiverListener = d;
839   this.autoJoinPolicy = e || chrome.cast.Fb.TAB_AND_ORIGIN_SCOPED;
840   this.defaultActionPolicy = f || chrome.cast.Jb.CREATE_SESSION;
841   this.customDialLaunchCallback = null;
842 };

该函数似乎在第 2441 行调用,此处:

2440 b.Wf = function(a) {
2441  this.B && this.B.sessionListener(a.message);
2442 };

我在那里设置了一个断点,它从未被调用过。在这一点上,我陷入了僵局,有什么想法吗?

我在 copy/pasted 这里 https://github.com/googlecast/CastHelloText-chrome/blob/master/chromehellotext.html#L162

传递给示例代码的 cast.requestSession() 函数的回调中找到了问题的根源

我已经提交了一个解决问题的拉取请求 https://github.com/googlecast/CastHelloText-chrome/pull/14 但我怀疑它是否会被拉取,因为看起来他们有 PR 排在队列中好几年都没有得到解决。