我有一个需要与Qt桌面应用程序进行通信的谷歌浏览器网页扩展 - 但是如何?如何将chrome web扩展与本地主机服务器连接?
有镀铬的本地消息,但我想,以支持多种浏览器/ OS,这将是太多精力,因为它是唯一的铬。
然后有this帖子,建议设置本地服务器。这就是我所做的,见下文。
我已经建立了使用Qt上127.0.0.1(本地主机)使用QTcpSocket
的一个服务器QTcpServer
。但是,网络扩展程序无法侦听套接字,只有Chrome应用程序can。我有两种可能的解决方案:
作为一种解决方法,我可以写一个小型的Chrome应用程序。 Qt应用程序会通过chrome应用程序与Chrome扩展对话(Chrome应用程序支持套接字)。但我认为这种方法很笨拙,不够优雅。
另一方面,我已阅读约
socket.io
。 这个想法是:铬扩展通过http requests
与socket.io进行通信,并且socket.io通过套接字与我的桌面应用进行通信。这是一个可能的解决方案?
我也试过,是用下面的代码直接连接到本地服务器。在我的Qt服务器应用程序中,我看到有一个新的连接。但我不能让所有的响应(无论是我的Qt编码是错误的,或者是因为扩展可以不听插座?)
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://localhost:12345", true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
alert('This is the response from the server: '+ xhr.responseText);
}
如果你想支持多种浏览器/ OS,你为什么还在使用谷歌Chrome浏览器扩展?它只适用于铬。 –
因为它是最容易开始和核心(js,html,css)应该是相当普遍的... – user2366975