Javascript 在Chrome Kiosk/Extension/Apps和Web浏览器中实现RabbitMQ
我正在开发需要推送通知的内部应用程序,但我们不能使用外部服务。我已经开始使用RabbitMQ,并在.NETCore中完美地运行它。当我尝试用javascript实现同样的东西时,我并没有得到同样的结果 我用C#开发了测试客户端。我用javascript开发了一个客户端。我可以成功连接,但数据未到达 在C#中,我使用:Javascript 在Chrome Kiosk/Extension/Apps和Web浏览器中实现RabbitMQ,javascript,rabbitmq,Javascript,Rabbitmq,我正在开发需要推送通知的内部应用程序,但我们不能使用外部服务。我已经开始使用RabbitMQ,并在.NETCore中完美地运行它。当我尝试用javascript实现同样的东西时,我并没有得到同样的结果 我用C#开发了测试客户端。我用javascript开发了一个客户端。我可以成功连接,但数据未到达 在C#中,我使用: string e = Console.ReadLine(); Console.WriteLine("Enter a message
string e = Console.ReadLine();
Console.WriteLine("Enter a message (blank for test msg)");
string message = Console.ReadLine();
var factory = new ConnectionFactory() { HostName = "10.222.2.160" };
factory.UserName = "Test";
factory.Password = "TestPassword";
factory.VirtualHost = "/";
using (var connection = factory.CreateConnection("TestChannel"))
using (var channel = connection.CreateModel())
{
var body = Encoding.UTF8.GetBytes(message);
channel.BasicPublish(exchange: e,
routingKey: "",
basicProperties: null,
body: body);
Console.WriteLine(" [x] Sent {0}", message);
}
在Javascript中:
var wsbroker = "10.222.2.160"; // mqtt websocket enabled broker
var wsport = 15675; // port for above
var client = new Paho.MQTT.Client(wsbroker, wsport, "/ws/",
"test");
client.onConnectionLost = function (responseObject) {
console.log("CONNECTION LOST - " + responseObject.errorMessage);
};
client.onMessageArrived = function (message) {
console.log("RECEIVE ON " + message.destinationName + " PAYLOAD " + message.payloadString);
};
var options = {
userName: "Test",
password: "TestPassword",
timeout: 3,
keepAliveInterval: 30,
onSuccess: function () {
console.log("CONNECTION SUCCESS");
client.subscribe('test', { qos: 1 });
},
onFailure: function (message) {
console.log("CONNECTION FAILURE - " + message.errorMessage);
}
};
if (location.protocol == "https:") {
options.useSSL = true;
}
console.log("CONNECT TO " + wsbroker + ":" + wsport);
client.connect(options);
我需要能够从javascript(非节点,chrome kiosk应用程序/chrome扩展)连接到rabbitmq。然而,我不确定我是否“理解”了拉比MQ。给我指出正确的方向会帮助一个女孩走出困境。谢谢 您在此处发布时没有路由密钥:
channel.BasicPublish(exchange: e,
routingKey: "",
basicProperties: null,
body: body);
确保test
队列存在,然后将发布服务器中的routingKey
更改为test
,并使用名为amq.direct
的exchange
您应该阅读此处提供的RabbitMQ简介,以熟悉交换、队列、路由密钥和绑定的交互方式:
注意:RabbitMQ团队监控
RabbitMQ用户
,并且有时只回答有关StackOverflow的问题。嘿,Luke,感谢您的快速回复!我仔细阅读了文档,它肯定是我一直在寻找的,并澄清了许多问题。现在,我可以说我在C#中完美地完成了这项工作。我的问题似乎是关于泛美卫生组织Javascript库。它似乎相当有限,只支持订阅主题。这是正确的还是我遗漏了什么?我刚刚注意到您正在使用MQTT。MQTT使用“幕后”主题。我建议搜索“RabbitMQ MQTT AMQP集成”,看看人们如何将两者联系起来。另一种选择是使用C#MQTT客户机库。