Javascript Chromecast网络实施细节,并用roku复制

Javascript Chromecast网络实施细节,并用roku复制,javascript,google-chrome-extension,xmlhttprequest,chromecast,roku,Javascript,Google Chrome Extension,Xmlhttprequest,Chromecast,Roku,入门:我正在尝试复制roku中chromecast的“类似”功能,对于我的项目,我需要发现roku(使用udp),然后随后发送一个http post请求来控制它 我最近受到chromecast的启发(来自我最近参加的一个开发节),发现它使用SSDP来被发现,这让我开始写(修改得比任何东西都多)一个扩展,它将找到我的roku,所以我有了它 无论控制它有多么困难,由于同一来源策略(我认为),我似乎无法发送到不同的端口(使用XMLHttpRequest对象通常为:8060),因此我想知道是否有人知道c

入门:我正在尝试复制roku中chromecast的“类似”功能,对于我的项目,我需要发现roku(使用udp),然后随后发送一个http post请求来控制它

我最近受到chromecast的启发(来自我最近参加的一个开发节),发现它使用SSDP来被发现,这让我开始写(修改得比任何东西都多)一个扩展,它将找到我的roku,所以我有了它

无论控制它有多么困难,由于同一来源策略(我认为),我似乎无法发送到不同的端口(使用XMLHttpRequest对象通常为:8060),因此我想知道是否有人知道chromecast是如何工作的,以及该方法是否能够适应我的项目,或者,如果您有一个解决方案,可以让我的扩展向:8060发送http post请求,路径为/keypress/Select(例如)


注意:如果我发送一个只有IP地址(没有端口)的XMLHttpRequest,它至少会成功返回200,但它不能控制roku,我的理解是,你必须有端口,这样它才知道该做什么。

长话短说,我对如何处理我的输入感到有些困惑,今晚我又玩了一点,以下是对我有效的方法:

var xmlhttp = new XMLHttpRequest();

xmlhttp.open("POST","http://" + <ip>:<port> + "/keypress/Select",true);
xmlhttp.send();
var xmlhttp=new XMLHttpRequest();
open(“POST”,“http://“+:+”/keypress/Select”,true);
xmlhttp.send();

是的,显然我一直在玩一个打包的应用程序,所以一旦我转换成扩展,似乎我不能使用“套接字”,所以我仍然在一条类似的船上,我想知道chromecast如何解决它仍然是一个扩展的问题。

我不熟悉roku的内部结构,所以我不知道它提供了什么API。无论如何,我不确定我是否理解您遇到相同来源问题的情况。你能解释一下谁在向谁发送XHR请求吗?作为补充说明,您可以使用适当的标志启动chrome浏览器,以禁用同源安全检查。因此,chrome扩展应向路径/keypress/Select发送POST消息。我已在nodejs中完成了此操作(发送我试图在扩展中“复制”的消息的函数:),我可以发送json对象(此处:)我只是不知道如何从我的分机上进行类似的操作。如果我想向其他用户提供此扩展,他们不需要相同的安全检查标志吗?Chromecast是如何解决这个问题的?为什么您要在分机和设备之间复制Chromecast消息?你为什么不自己写一本最适合你的书呢?我想这比复制chromecast的功能要容易得多。我并不是在复制chromecast的功能,但我假设当你从分机向chomecast设备发送命令时,它必须“发布”一个请求,如果这样做有效,我想知道如何做,这样我就可以在我的分机中完成(根据SDK,roku是由post请求控制的)。他们必须以某种方式解决同一来源的问题。旁注,我不是一名web开发人员,因此如何将post请求发送到另一个具有不同端口的站点的一些概念并不完全是“常识”对我来说,我只是想把问题分成最小的部分,现在我需要能够以这种方式发布,chromecast似乎正在实现我想要做的,我对他们是如何做到的感兴趣。