[英]send a message between a webpage to RabbitMq in raspberry pi
我正在尝试在网页之间向树莓派中的 RabbitMq 发送消息。 RabbitMq 教程中的 send.js 和 receive.js 工作正常。 但是,当在 HTML 中添加指向 javascript 文件的链接时不起作用
<HTML>
<head>
<script type = "text/javascript" src="send.js"></script>
</head>
<body>
<p>Click the following button to see the function in action</p>
<input type = "button" onclick = "myfunction()" value = "Display">
</body>
</html>
send.js是网站教程中的一个。 我所做的唯一更改是添加 function 标题
function myfunction () {
var amqp = require('amqplib/callback_api');
amqp.connect('amqp://localhost', function(error0, connection) {
if (error0) {
throw error0;
....
.....
....
有什么我想念的吗?
require
是 CommonJS 模块的一个特性。 这是 Node.js 使用的默认模块系统,web 浏览器不支持。
虽然可以使用捆绑器(例如 Webpack 或 Parcel)将某些模块转换为在浏览器中使用,但您正在使用的模块明确标记为用于 Node.js 并且几乎可以肯定依赖于 Z3B2819DD2C24EDA251FAF25 中可用但浏览器中不可用的 API。
您的代码不会在浏览器中运行。
您可以使用使用 amqplib 的 Node.js(例如使用 Express.js 模块)编写 web 服务,然后使用浏览器原生支持的获取 API访问它。 或者,如果您需要服务器能够发起消息,请使用Websockets 。
通过网站与 RabbitMQ 服务建立实时连接的想法围绕着 WebSockets。 对于这种方法,我们需要在 RabbitMQ 服务上安装一个插件,然后在客户端,打开一个 WebSocket 来连接插件。 该插件是 WS 和代理之间的一种桥梁。
根据我的经验,Paho.js 和 STOMP 是两个现有的解决方案。 Paho.js 仅限于连接到主题,而 STOMP 是一个完整的实用工具。
要在 RabbitMQ 服务器上启用 STOMP 插件:
rabbitmq-plugins enable rabbitmq_stomp
然后也安装网桥:
rabbitmq-plugins enable rabbitmq_web_stomp
现在您的服务器已经可以使用了。 让我们进入客户端。 下载此文件并将其放在项目中的某个位置。 现在是socket连接部分:
import { Stomp } from './stomp';
var ws = new WebSocket('ws://yourServerAddress:15674/ws');
var client = Stomp.over(ws);
var on_receive = function(data) {
console.log('received:', data.body);
};
var on_connect = function() {
console.log('connected');
client.subscribe('/amq/queue/your-queue', on_receive)
};
var on_error = function() {
console.log('error');
};
client.onreceive = on_receive;
client.connect('yourUsename', 'thePasswd', on_connect, on_error, '/');
function send(payload, headers={}){
client.send('/amq/queue/your-queue', headers, JSON.stringify(payload));
}
/amq/topic/your-topic
您可以在此处查看完整的文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.