RabitMQ föratt ta emot meddelanden på en websida med JS?
RabitMQ föratt ta emot meddelanden på en websida med JS?
Hej,
Jag har lekt lite med RabbitMQ som alternativ till att använda repetitiv pollning av en databas som meddelande kanal.
Det fungerar utmärkt mellan olika python program på servern men nu vill jag få ut meddelandena till en websida.
Idag har jag long polling med XMLHttprequest mot ett PHP server script som i sin tur pollar databasen.
Denna long polling skulle jag vilja byta mot events. Kan man göra det direkt med RabbitMQ eller krävs det något mer?
Har hittat lite info om node.js och rabbit.js men hittar inte tillräckligt med "how to do it" för att jag ska förstå hur jag ska komma igång...
Någon som kan tipsa mig hur eller peka på någon bre tutorial?
Jag har lekt lite med RabbitMQ som alternativ till att använda repetitiv pollning av en databas som meddelande kanal.
Det fungerar utmärkt mellan olika python program på servern men nu vill jag få ut meddelandena till en websida.
Idag har jag long polling med XMLHttprequest mot ett PHP server script som i sin tur pollar databasen.
Denna long polling skulle jag vilja byta mot events. Kan man göra det direkt med RabbitMQ eller krävs det något mer?
Har hittat lite info om node.js och rabbit.js men hittar inte tillräckligt med "how to do it" för att jag ska förstå hur jag ska komma igång...
Någon som kan tipsa mig hur eller peka på någon bre tutorial?
Re: RabitMQ föratt ta emot meddelanden på en websida med JS?
Tack,
Har sett den "klicka förbi" men inte fastnat för den.
Har nu provat det spåret och fastnar påMed felmeddelande
Jag kör Rabbit MQ på en raspberry pi, om det kan vara till en ledtråd (kanske framgår av hostnamnet... rpi-3...)
Har sett den "klicka förbi" men inte fastnat för den.
Har nu provat det spåret och fastnar på
Kod: Markera allt
<script>
var ws = new SockJS('http://rpi-3:15674/stomp');
var client = Stomp.over(ws);
var on_connect = function() {
Kod: Markera allt
Uncaught ReferenceError: Stomp is not defined
Re: RabitMQ föratt ta emot meddelanden på en websida med JS?
Mera...
Genom att använda dessaSå får jag inte längre det felet utan detta fel
Tror det har med att guest inte får ansluta utanför localhost och att jag måste skapa en config fil som ändrar default configen...
Genom att använda dessa
Kod: Markera allt
<script src="https://cdnjs.cloudflare.com/ajax/libs/stomp.js/2.3.3/stomp.m$
//<script src="http://rpi-3/stomp.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/sockjs-client/0.3.4/so$
Kod: Markera allt
Web Socket Opened...
stomp.min.js:8 >>> CONNECT
login:guest
passcode:guest
host:/
accept-version:1.1,1.0
heart-beat:10000,10000
<<< ERROR
message:Bad CONNECT
content-type:text/plain
version:1.0,1.1,1.2
content-length:26
non-loopback access denied
Re: RabitMQ föratt ta emot meddelanden på en websida med JS?
Hej igen,
Då var jag förbi det problemet men nu fastnar jag på dettaJag har med detta i config filen för att försöka stänga av heartbeat vilket jag har för mig att jag såg inte skulle funka på Pi.
Irriterande nog kan jag inte längre hitta någon sida om RabbitMQ och Web Stomp på Pi...
Då var jag förbi det problemet men nu fastnar jag på detta
Kod: Markera allt
<<< CONNECTED
session:session-WY7CD5rvGjPGqHYq94ROHw
heart-beat:10000,10000
server:RabbitMQ/3.5.1
version:1.1
connected to server RabbitMQ/3.5.1
send PING every 10000ms
check PONG every 10000ms
connected
>>> PING
did not receive server activity for the last 20008ms
Whoops! Lost connection to undefined
error
Kod: Markera allt
[
{rabbit,[
{loopback_users,[]},
{heartbeat, 0}
]}
].
Re: RabitMQ föratt ta emot meddelanden på en websida med JS?
Hittade detta...
Så nu fastnar jag inte där längre, var inte Pi'n som inte kunde det utan SockJS!
Kod: Markera allt
// SockJS does not support heart-beat: disable heart-beats
client.heartbeat.outgoing = 0;
client.heartbeat.incoming = 0;
Re: RabitMQ föratt ta emot meddelanden på en websida med JS?
Små steg...
Nu kan jag skicka data från ett Py script via RabbitMQ til lett annat script och till ett web javascript
Men... de skickas ut som man delar ut kort, "roundrobin"
Försöker få till det med fanout och publish/subscribe men det vill inte... kanske för trött
Nu kan jag skicka data från ett Py script via RabbitMQ til lett annat script och till ett web javascript
Men... de skickas ut som man delar ut kort, "roundrobin"
Försöker få till det med fanout och publish/subscribe men det vill inte... kanske för trött
Re: RabitMQ föratt ta emot meddelanden på en websida med JS?
Där satt den!
Nu kan jag skicka meddelanden från en process och ta emot dem i en annan process och i en webbsida! (fanout)
Nu används databasen enbart för att skapa en logg och kunna visa historik.
Nästa steg att att skicka data från webbsidan också men det känns som att det kommer att funka nu.
@johano, tack för länken!
Nu kan jag skicka meddelanden från en process och ta emot dem i en annan process och i en webbsida! (fanout)
Nu används databasen enbart för att skapa en logg och kunna visa historik.
Nästa steg att att skicka data från webbsidan också men det känns som att det kommer att funka nu.
@johano, tack för länken!
Re: RabitMQ föratt ta emot meddelanden på en websida med JS?
Kul!
Jag har inte använt RabbitMQ från webbklient själv så det är intressant att följa.
/johan
Jag har inte använt RabbitMQ från webbklient själv så det är intressant att följa.
/johan
Re: RabitMQ föratt ta emot meddelanden på en websida med JS?
Slå bara på web-stomp tillägget i RabbitMQ så är det klart att köra.
Här är min test klient (lite orensad från rester av tester), kastar upp en alert ruta för varje meddelande.
Denna lyssnar till en exchange av typ fanout så fler kan lyssna.
Här är min test klient (lite orensad från rester av tester), kastar upp en alert ruta för varje meddelande.
Denna lyssnar till en exchange av typ fanout så fler kan lyssna.
Kod: Markera allt
<html>
<body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
//<script src="sockjs-0.3.js"></script>
<script src="stomp.js"></script>
// <script src="https://cdnjs.cloudflare.com/ajax/libs/stomp.js/2.3.3/stomp.min.js"></script>
// <script src="http://rpi-3/stomp.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/sockjs-client/0.3.4/sockjs.min.js"></script>
<h1>Did it work?</h1>
<script>
var ws = new SockJS('http://rpi-3:15674/stomp');
var client = Stomp.over(ws);
// SockJS does not support heart-beat: disable heart-beats
client.heartbeat.outgoing = 0;
client.heartbeat.incoming = 0;
var callback = function(message) {
if (message.body) {
alert("got message with body " + message.body)
} else {
alert("got empty message");
}
};
var on_connect = function() {
console.log('connected');
id = client.subscribe('/exchange/broadcast', callback);
};
var on_error = function() {
console.log('error');
};
client.connect('guest', 'guest', on_connect, on_error, '/');
</script>
<p>This is the RabbitMQ web stomp test page.</p>
<p>No functionality has been added to this server yet!</p>
</body>
</html>
Re: RabitMQ föratt ta emot meddelanden på en websida med JS?
SockJS (nodejs) och RabbitMQ är utvecklade av samma utvecklare om jag inte missminner mig (i alla fall multiplex modulen). Kör RabbitMQ tillsammans med Asterisk som publiceras till diverse plattformar på jobbet.