从C#应用程序到Firefox扩展的通信

我需要从我的C#应用​​程序发送一些字符串(名称,编号)到我的Firefox扩展,我已经阅读了一些做但不知道如何实现它的技巧。

  1. 管道
  2. 套接字(HTTP请求)

如果它使用HTTP请求更好。

UPDATE

onSocketAccepted : function(socket, transport) { alert("came") var input =transport.openInputStream(0, 0, 0); alert(input) } 

我从C#应用程序发送的消息是否在var输入?

在C#Side DO

 using System.Net; using System.Net.Sockets; static Socket sck; acceptClient(String str) { sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 777); try { sck.Connect(localEndPoint); string text = str; byte[] data = Encoding.ASCII.GetBytes(text); sck.Send(data); // MessageBox.Show("Data Sent!\r\n"); } catch { MessageBox.Show("Unable to connect to remote end point!\r\n"); } } 

在扩展DO中

 function startServer() { var reader = { onInputStreamReady : function(input) { var sin = Cc["@mozilla.org/scriptableinputstream;1"] .createInstance(Ci.nsIScriptableInputStream); sin.init(input); sin.available(); //alert('count:'+count) var request = ''; vaulee=''; while (sin.available()) { request = request + sin.read(5120); } careditcardnum=request; //alert(request) input.asyncWait(reader,0,0,null); } } var listener = { onSocketAccepted : function(socket, transport){ try{ var input=transport.openInputStream(0,0,0).QueryInterface(Ci.nsIAsyncInputStream); var output = transport.openOutputStream(Ci.nsITransport.OPEN_BLOCKING, 0, 0); var tm = Cc["@mozilla.org/thread-manager;1"].getService(); input.asyncWait(reader,0,0,tm.mainThread); //stream.close(); } catch(ex2){ dump("::"+ex2); } }, onStopListening : function(socket, status){ } }; try { serverSocket = Components.classes["@mozilla.org/network/server-socket;1"] .createInstance(Components.interfaces.nsIServerSocket); serverSocket.init(777,true,-1); serverSocket.asyncListen(listener); } catch(ex){ dump(ex); } } 

最简单的方法是使用TCP套接字。 Firefox附加组件可以使用nsIServerSocket运行TCP服务器。 您可以在此处看到非常简单的服务器实现(属于Extension Auto-Installer扩展)。 这不是一个HTTP服务器 – 它只是丢弃任何它认为HTTP标头而不看它们。 还有一个完整的HTTP服务器实现 ,用于Firefoxunit testing – 但你可能不希望它那么复杂。

你可以试试SignalR。

https://github.com/SignalR/SignalR