Javascript 在Chrome Kiosk/Extension/Apps和Web浏览器中实现RabbitMQ

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

我正在开发需要推送通知的内部应用程序,但我们不能使用外部服务。我已经开始使用RabbitMQ,并在.NETCore中完美地运行它。当我尝试用javascript实现同样的东西时,我并没有得到同样的结果

我用C#开发了测试客户端。我用javascript开发了一个客户端。我可以成功连接,但数据未到达

在C#中,我使用:

            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客户机库。