我的桌面应用程序需要与我的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。