Как подключить расширение chrome web с сервером localhost?
у меня есть веб-расширение google chrome, которое должно взаимодействовать с настольным приложением Qt - но как?
есть собственный обмен сообщениями chrome, но поскольку я хочу поддерживать несколько браузеров/ОС, это будет слишком много усилий, потому что это только для chrome.
то есть этой сообщение, которое предлагает настроить локальный сервер. Вот что я сделал, смотрите ниже.
Я настроил сервер с Qt с QTcpServer
использует QTcpSocket
на 127.0.0.1 (localhost). Но веб-расширение не может слушать сокеты, только chrome apps can. На мой взгляд, есть 2 возможных решения:
в качестве обходного пути я мог бы написать небольшое приложение chrome. Приложение Qt будет разговаривать с расширением chrome через приложение chrome (chrome apps support sockets). Но я думаю, что этот метод неуклюжий и не совсем элегантный.
на другой стороны, я читал о
socket.io
. Идея: расширение chrome говорит черезhttp requests
с гнездом.io и сокет.io разговаривает через сокеты с моим настольным приложением. Возможно ли такое решение?
то, что я также пытался, это напрямую подключиться к локальному серверу со следующим кодом. В моем приложении Qt server я вижу, что есть новое соединение. Но я не могу получить ответ вообще (либо мой 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 );
}
1 ответов
Как вы уже знаете расширения могут не создать прямое сообщение:
Google Chrome Socket API в расширениях
возможное решение
возможно, ваше приложение QT может служить websocket, и вы должны иметь возможность общаться с этим из Javascript:
http://www.html5rocks.com/en/tutorials/websockets/basics/
Если вы не можете обслуживать websockets из внутри приложения QT другим подходом может быть создание "моста" небольшого скрипта, который может служить websocket для вашего JavaScript и передавать сообщения из/в приложение QT
вы найдете много примеров на websockets, простой способ попасть в это может быть создание небольшого сервера с помощью узла.js, чтобы играть с ним stackabuse.com/node-js-websocket-examples-with-socket-io/
о! и выполните поиск "websocket же политики происхождения"
пример расширения с использованием websockets (что будет полезно для отладки): chrome.google.com/webstore/detail/simple-websocket-client/pfdhoblngboilpfeibdedpjgfnlcodoo?hl=en
надеюсь, что это помогает