C# NativeMessaging 到 Chrome
C# NativeMessaging to Chrome
我正在尝试创建一个 plugin/listener 让外部应用程序将消息泵入我的 SPA page/app。
我创建了清单、JS 文件并添加了一个 reg 条目,但无济于事,我的听众没有被触发。
我有:
//JavaScript源代码
Native.js - 插件
chrome.runtime.onMessageExternal.addListener(
function (request, sender, sendResponse) {
console.log(request);
console.log(sender);
console.log(sendResponse);
});
Manifest.json - 插件
{
"manifest_version": 2,
"name": "Native Messaging Example",
"version": "1.0",
"permissions": [
"nativeMessaging"
],
"background": {
"scripts": [ "Native.js" ]
},
"externally_connectable": {
"matches": [ "*://localhost/*", "*://casetest/*", "*://case/*" ]
}
}
C#
Program.js
using System;
using System.IO;
namespace ChromeNativeMessaging
{
class Program
{
static void Main(string[] args)
{
OpenStandardStreamOut("data");
Console.ReadLine();
}
private static void OpenStandardStreamOut(string stringData)
{
String str = "{\"text\": \"" + stringData + "\"}";
//String str = stringData;
Stream stdout = Console.OpenStandardOutput();
stdout.WriteByte((byte)str.Length);
stdout.WriteByte((byte)'[=13=]');
stdout.WriteByte((byte)'[=13=]');
stdout.WriteByte((byte)'[=13=]');
Console.Write(str);
}
}
}
Manifest.json
{
"name": "com.example.nativeMessage",
"description": "Hello World App",
"path": "C:\Users\sas\Documents\visual studio 2013\Projects\ChromeNativeMessaging\ChromeNativeMessaging\bin\Debug\ChromeNativeMessaging.exe",
"type": "stdio",
"allowed_origins": [
"chrome-extension://gbdadncpjaecammkmeolpbembeedjohb/"
]
}
Chrome 从不监听来自外部的本机连接(onMessageExternal
不适用),运行 您的 C# 代码也不会神奇地联系 Chrome.
只有您的 JavaScript 端可以启动连接(通过 运行 本地主机的新副本),之后您可以保持连接打开(如果您使用 connect()
).
因此,如果您想在浏览器外部发生的事件得到通知,您需要从扩展端启动本机主机,然后在本机主机中处理这些事件。
总而言之,您应该(重新)完整阅读文档:https://developer.chrome.com/extensions/nativeMessaging
我正在尝试创建一个 plugin/listener 让外部应用程序将消息泵入我的 SPA page/app。
我创建了清单、JS 文件并添加了一个 reg 条目,但无济于事,我的听众没有被触发。
我有:
//JavaScript源代码
Native.js - 插件
chrome.runtime.onMessageExternal.addListener(
function (request, sender, sendResponse) {
console.log(request);
console.log(sender);
console.log(sendResponse);
});
Manifest.json - 插件 { "manifest_version": 2,
"name": "Native Messaging Example",
"version": "1.0",
"permissions": [
"nativeMessaging"
],
"background": {
"scripts": [ "Native.js" ]
},
"externally_connectable": {
"matches": [ "*://localhost/*", "*://casetest/*", "*://case/*" ]
}
}
C#
Program.js
using System;
using System.IO;
namespace ChromeNativeMessaging
{
class Program
{
static void Main(string[] args)
{
OpenStandardStreamOut("data");
Console.ReadLine();
}
private static void OpenStandardStreamOut(string stringData)
{
String str = "{\"text\": \"" + stringData + "\"}";
//String str = stringData;
Stream stdout = Console.OpenStandardOutput();
stdout.WriteByte((byte)str.Length);
stdout.WriteByte((byte)'[=13=]');
stdout.WriteByte((byte)'[=13=]');
stdout.WriteByte((byte)'[=13=]');
Console.Write(str);
}
}
}
Manifest.json
{
"name": "com.example.nativeMessage",
"description": "Hello World App",
"path": "C:\Users\sas\Documents\visual studio 2013\Projects\ChromeNativeMessaging\ChromeNativeMessaging\bin\Debug\ChromeNativeMessaging.exe",
"type": "stdio",
"allowed_origins": [
"chrome-extension://gbdadncpjaecammkmeolpbembeedjohb/"
]
}
Chrome 从不监听来自外部的本机连接(onMessageExternal
不适用),运行 您的 C# 代码也不会神奇地联系 Chrome.
只有您的 JavaScript 端可以启动连接(通过 运行 本地主机的新副本),之后您可以保持连接打开(如果您使用 connect()
).
因此,如果您想在浏览器外部发生的事件得到通知,您需要从扩展端启动本机主机,然后在本机主机中处理这些事件。
总而言之,您应该(重新)完整阅读文档:https://developer.chrome.com/extensions/nativeMessaging