chrome web扩展和localhost之间的IPC(QLocalServer)

时间:2016-01-23 13:18:58

标签: qt google-chrome-extension xmlhttprequest ipc

我的桌面应用程序需要与我的Chrome网络扩展程序进行通信。 正如SO上的几篇帖子中所建议的那样,我想通过本地服务器执行此操作。 但是,我是Web开发的新手,没有服务器编程经验。

现在我不知道如何在服务器(localhost)和客户端(web扩展)之间建立连接。 我尝试用作本地服务器的QLocalServer只需要一个服务器名称,如"MyLocalServer"。如果客户端也是用Qt制作的,那么这个名字就足以知道了。但是,Web扩展实现的想法是使用javascript和XMLHttpRequest。我关心XMLHttpRequest的两件事:

  • 当我只知道它的名字时,如何连接到本地服务器?我不知道这个端口,我在互联网上看到的就像

    var xmlhttp = new XMLHttpRequest();
    xmlhttp.open("GET",'http://localhost:8081/sample.xml',true);
    xmlhttp.send();
    

    您需要知道端口号。

  • 由于同源策略,我不确定我是否可以这样做。 如果我不需要访问文件(例如/sample.xml上面的网址),它是否有所作为?我只想通过流进行通信。无需访问硬盘上的已保存文件。

如果有帮助,这是我对本地Qt服务器的第一个想法:

server.h:

class QLocalServer;
class Server : public QObject
{
    Q_OBJECT
public:
    explicit Server(QObject *parent = 0);
private slots:
    void onNewConnection();
    void sendResponse();
private:
    QLocalServer* server_;
};

server.cpp:

Server::Server(QObject *parent) :
    QObject(parent),
    server_(new QLocalServer)
{
    server_->listen("MyLocalServer");
    connect(server_,SIGNAL(newConnection()),this,SLOT(onNewConnection()));
}

void Server::onNewConnection()
{
    qDebug()<<"New connection.";
}

void Server::sendResponse()
{
    qDebug()<<"Sending response...";
}

编辑:

我不仅限于使用QLocalServer,如果有效,我也可以使用QTcpServer。然后我有一个IP地址和端口号用于XMLHttpRequest,但不幸的是我也无法使它工作。 我发现2013年发布的this帖子与类似主题有关,建议使用XMLHttpRequest(我上面尝试过)或使用websockets。

0 个答案:

没有答案