如何使用 Chromecast 从自定义接收方向发送方应用发送消息?
Posted
技术标签:
【中文标题】如何使用 Chromecast 从自定义接收方向发送方应用发送消息?【英文标题】:How do I send a message from custom receiver to sender app with Chromecast? 【发布时间】:2014-09-26 19:17:43 【问题描述】:我正在尝试通过 github 项目“CastHelloText-chrome”工作: https://github.com/googlecast/CastHelloText-chrome
我已经浏览了示例和官方文档。目前我正在尝试将一个简单的字符串传递给发件人。
这是我的功能:
function DispatchToSender()
debugger;
try
if (window.messageBus == null)
window.messageBus =
window.castReceiverManager.getCastMessageBus(
'urn:x-cast:com.radiodile.mobilex');
//I now pass in "theSenderID" based on Ali's comment
window.messageBus.send(theSenderID, "This gun's for hire");
catch (e)
console.log("Dispath to sender exception: " + e);
这无济于事,而且这个用例的文档非常稀少(至少对我过热的大脑而言)
有人可以在正确的方向上轻推我吗?
谢谢!
PS - 我的 DispatchToSender() 函数确实会执行以下操作:
// 如果指定的端口 id 在此上下文中,则返回 true。这是由 功能有端口(端口ID) 在端口中返回 portId; ; // C++ 避免为所有上下文创建 javascript 消息 // 不关心特定的消息。
以上内容似乎是我从自定义接收器中引用的 JS SDK 的一部分。它永远不会过去,所以我确定我做错了什么,但没有像 moi 这样的假人的例子:))
更新 Ali Naddaf 的评论 - 仍然没有运气
先生,我已阅读您的评论并尝试了以下操作。
receiver.html
从receiver.html 中的初始化开始 - 我将页面级变量“theSenderID”设置为 event.senderId 值
// CastMessageBus 消息事件的处理程序
window.messageBus.onMessage = function (event)
console.log('Message [' + event.senderId + ']: ' + event.data);
theSenderID = event.senderId; // CAPTURE THE SENDER ID FOR RE-USE IN DISPATCH EVENT FN()
// display the message from the sender
displayText(event.data);
// inform all senders on the CastMessageBus of the incoming message event
// sender message listener will be invoked
window.messageBus.send(event.senderId, event.data);
然后我尝试在我编写的 DispatchEvent() 函数中发送这样的消息:
window.messageBus.send(theSenderID, "这把枪是出租的");
在上面我确实有一个 theSenderID 的值,它是:“6:client-54624”
当我调用 window.messageBus.send 时,我没有看到异常,但在我的发件人应用程序中我从未收到消息:
chromehellotext.html
/**
* utility function to log messages from the receiver
* @param string namespace The namespace of the message
* @param string message A message string
*/
function receiverMessage(namespace, message)
appendMessage("receiverMessage: " + namespace + ", " + message);
;
请注意,在阅读您的评论之前,我使用的是我创建的自定义命名空间作为 senderId,因为发送者的“receiverMessage()”函数中的第一个参数。
receiverMessage() 确实有效,并且正在拦截 chromehellotext 示例的接收器的 DisplayText() 函数中的 setApplicationState(text) 值。
我完全糊涂了。
我没有尝试过广播消息,但直接与发件人沟通似乎更好?
谢谢!!
【问题讨论】:
【参考方案1】:发送方法是:send(senderId, message)
,所以我不清楚您传递的发件人 ID 是什么;这应该是接收方 SDK 在加入/启动会话时分配给该发送方的唯一发送方 ID。如果您不关心一个发件人与所有连接的发件人,请使用broadcast(message)
【讨论】:
嗨 Ali,请参阅我添加的 更新。我确实尝试遵循您评论的要点,但到目前为止我还没有成功。谢谢! 不确定为什么它在几分钟前不起作用。我回来更新帖子并让发送者和接收者都处于调试模式。经过一番谷歌搜索并一无所获,我只是再次触发了事件序列,这次 .send() 方法按照您的指示与 senderid 一起工作。非常感谢!以上是关于如何使用 Chromecast 从自定义接收方向发送方应用发送消息?的主要内容,如果未能解决你的问题,请参考以下文章
Chromecast 自定义接收器播放器卡在 IDLE 状态并且没有响应
如何从 Chromecast 自定义接收器获取型号名称和设备版本信息?
如何将我的自定义接收器 chromecast(CAF)的媒体播放器更改为另一个播放器