如何使用Chromecast从自定义接收器向发件人应用发送消息?

时间:2014-09-26 19:17:44

标签: chromecast

我正在尝试通过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。这是用来的   function hasPort(portId){     在port中返回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 个答案:

答案 0 :(得分:1)

发送方法是:send(senderId, message)所以我不清楚你传递的发件人ID是什么;这应该是接收器SDK在加入/启动会话时分配给该发送方的唯一发送方ID。如果您不关心一个发件人与所有连接的发件人,请使用broadcast(message)