【发布时间】:2014-06-15 16:58:25
【问题描述】:
我一直在寻找答案,但我似乎找不到任何东西,Google's Docs 似乎对将消息发送到自定义接收器的问题不完整。
以前关于 StackOverflow 的答案似乎只使用 V1 Receiver API,而这似乎不适用于 V2 API。
谁能指出我正确的方向来简单地解释如何使用 V2 API 将消息从 Chrome Sender 应用程序发送到 Receiver?
【问题讨论】:
我一直在寻找答案,但我似乎找不到任何东西,Google's Docs 似乎对将消息发送到自定义接收器的问题不完整。
以前关于 StackOverflow 的答案似乎只使用 V1 Receiver API,而这似乎不适用于 V2 API。
谁能指出我正确的方向来简单地解释如何使用 V2 API 将消息从 Chrome Sender 应用程序发送到 Receiver?
【问题讨论】:
在发送方,您可以通过在会话侦听器中获得的会话对象发送消息:
session.sendMessage(namespace, message, onSuccess, onFailure);
https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Session#sendMessage
在接收方创建消息总线并监听传入消息:
messageBus = castReceiverManager.getCastMessageBus(
namespace,
cast.receiver.CastMessageBus.MessageType.JSON
);
messageBus.onMessage = function(event) {
var sender = event.senderId;
var message = event.data;
};
https://developers.google.com/cast/docs/reference/receiver/cast.receiver.CastReceiverManager#getCastMessageBus https://developers.google.com/cast/docs/reference/receiver/cast.receiver.CastMessageBus
namespace可以自己定义,但发送者和接收者必须相同,并以urn:x-cast:开头
为您要发送的信息定义正确的消息类型很重要,但 JSON 可能是最通用的。
您还可以使用消息总线将消息发送回发送者:
messageBus.send(senderId, message);
在 Sender 端有一个监听器:
session.addMessageListener(namespace, function (ns, message) {
});
https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Session#addMessageListener
我在 Github 上还有一个非常简单的 Chrome Sender/Custom Receiver 示例,其中包含发送消息的完整实现: https://github.com/Scarygami/chromecast_experiments/tree/master/photocast
【讨论】:
作为@scarygami 答案的更新,如果您需要对 CAF (API v3) 执行相同操作,这就是您在接收方收听消息的方式
const context = cast.framework.CastReceiverContext.getInstance();
context.addCustomMessageListener('urn:x-cast:<your-namespace>', event => {
console.log('CustomMessage: ', event);
});
【讨论】:
senderId?