2016-01-23 23 views
7

私はQtデスクトップアプリケーションと通信する必要があるGoogle ChromeのWeb拡張機能を持っていますが、どうですか?chrome web extensionをlocalhostサーバーに接続する方法は?

  • は、Chromeのネイティブメッセージングがありますが、私は複数のブラウザ/ OSをサポートしたいと、それが唯一のクロムのためであるので、これはあまりにも多くの努力になります。

  • 次に、thisの投稿があり、ローカルサーバーの設定を示唆しています。これは私がやったことです、以下を参照してください。

私は127.0.0.1(ローカルホスト)上QTcpSocket年代を使用していますQTcpServerとのQtを使用してサーバーを設定しています。しかし、Web拡張機能はソケットを聴くことはできません。クロムアプリcanのみが鳴ります。

  • 回避策として、私はおそらく小さなクロムアプリを書くことができました。 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); 
} 
+0

複数のブラウザ/ OSをサポートしたい場合は、引き続きGoogle Chrome拡張機能を使用しますか?それはクロムのためだけです。 –

+0

これは最初から始まり、コア(js、html、css)が非常に普遍的なはずです。 – user2366975

答えて

2

すでに拡張を知っているよう直接接続を作成できないすることができます

Google Chrome Socket API in extensions

可能な解決策

多分あなたのQTのアプリケーションはWebSocketのに役立つことができ、あなたはできるはずですJavaScriptからそれと通信するために:

http://www.html5rocks.com/en/tutorials/websockets/basics/

を使用すると、QTアプリケーション内からのWebSocketを提供することができない場合は、別のアプローチは、「ブリッジ」あなたのJavaScriptにWebSocketのに役立つ可能性がほとんどないスクリプトを作成することができ、

あなたはwebsocketでたくさんの例を見つけることができます。これに入る簡単な方法は、node.jsを使って小さなサーバーを作成してstackabuse.com/node-jsと遊ぶことです-websocket-examples-with-socket-io/

oh! "websocket same origin policy"の検索を実行します

WebSocketを使用した拡張機能の例(デバッグに便利です):chrome.google.com/webstore/detail/simple-websocket-client/pfdhoblngboilpfeibdedpjgfnlcodoo?hl = ja

これが役に立ちます

+1

これは私がその間に考え出したものです。私はWebソケットのサポートが追加されたため、vt Qt5.2をQt5.3にアップグレードしなければなりませんでした。私はHTML5クロムサイドとQtを使用していますが、node.jsは必要ありません。 – user2366975

関連する問題