2016-01-23 32 views
7

Bir google chrome web bir Qt masaüstü uygulaması ile iletişim kurmak için gereken uzantısı olan - ama nasıl?Chrome web uzantısı localhost sunucusuyla nasıl bağlanır?

  • Chrome'un yerel mesajlaşma vardır, ama birden fazla tarayıcı/işletim sistemi desteklemek istediğimiz gibi sadece krom için, çünkü bu çok fazla çaba olurdu.

  • Sonra yerel bir sunucu kurma anlaşılacağı this sonrası yoktur. Yaptığım şey bu, aşağıya bakın.

Ben 127.0.0.1 (localhost) üzerine QTcpSocket 's kullanır QTcpServer ile Qt bir sunucu kurdunuz. Ama bir web uzatma prizleri, sadece krom uygulamalar can dinleyemem.

  • Çözüm olarak, belki küçük bir krom uygulaması yazabilirsiniz: aklımda 2 olası çözümü vardır. Qt uygulaması, krom uygulaması aracılığıyla krom eklentisiyle (krom uygulamaları destek soketleri) konuşurdu. Ama bence bu yöntem hantal ve oldukça zarif değil.

    Öte yandan
  • , ben yaklaşık socket.io okudum. fikirdir: socket.io ile http requests aracılığıyla krom uzatma görüşmeleri ve benim masaüstü uygulaması ile soketleri vasıtasıyla socket.io konuşur. Bu olası bir çözüm mü? Ben de çalıştığım şey

, doğrudan aşağıdaki kodla yerel sunucuya bağlamaktır. Qt sunucu uygulamasında yeni bir bağlantı olduğunu görüyorum. Ama (benim Qt kodu yanlış veya uzantılar prizlere dinleyemiyorum çünkü ya?) Hiç bir yanıt alamayan

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

yardımcı olur, neden hala google chrome uzantılarını kullanmak? Sadece krom içindir. –

+0

çünkü başlamak için en kolay ve çekirdek (js, html, css) oldukça evrensel olmalıdır ... – user2366975

cevap

2

Zaten uzantıları bildiği gibi doğrudan bağlantı oluşturamaz edebilirsiniz:

Google Chrome Socket API in extensions

olası çözüm

belki QT uygulama WebSocket'e hizmet edebilir ve mümkün olmalıdır Javascript bu iletişim kurmak için:

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

Eğer QT uygulama içinde Yuvalarının sunamıyorsanız ise, başka bir yaklaşım "köprü" JavaScript'inizde bir WebSocket'e yarayacak bir küçük script oluşturmak olabilir ve iletilerinden/QT uygulamasına

websitelerinde çok sayıda örnek bulacaksınız, bunun içine girmenin kolay yolu, onunla oynamak için node.js kullanarak küçük bir sunucu oluşturmak olabilir stackabuse.com/node-js -websocket-örnekler-ile-soket io/

ah! chrome.google.com/webstore/detail/simple-websocket-client/pfdhoblngboilpfeibdedpjgfnlcodoo: ve "WebSocket aynı kökenli politikası" Yuvalarının kullanarak bir uzantısı

Örnek için arama yapmak (yani ayıklama için yararlı olacaktır)?hl = tr

umut Eğer birden fazla tarayıcı/işletim sistemi desteklemek istiyorsanız bu

+1

Bu arada ben de anladım. Web soketleri için ek destek nedeniyle vom Qt5.2'yi Qt5.3'e yükseltmem gerekti. HTML5 chrome-side ve Qt kullanıyorum, node.js gerekli değil. – user2366975

İlgili konular