[英]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.