OUD gebruik alleen een referentie
Afhankelijkheden
gebruikt express, socket.io, node_redis en last but not least de voorbeeldcode van media fire.
Installeer node.js+npm(als niet-root)
Eerst moet je (als je dit nog niet hebt gedaan) node.js+npm binnen 30 seconden installeren (op de juiste manier omdat je NIET voer npm uit als root ):
echo 'export PATH=$HOME/local/bin:$PATH' >> ~/.bashrc
. ~/.bashrc
mkdir ~/local
mkdir ~/node-latest-install
cd ~/node-latest-install
curl http://nodejs.org/dist/node-latest.tar.gz | tar xz --strip-components=1
./configure --prefix=~/local
make install # ok, fine, this step probably takes more than 30 seconds...
curl http://npmjs.org/install.sh | sh
Installeer afhankelijkheden
Nadat u node+npm hebt geïnstalleerd, moet u afhankelijkheden installeren door:
npm install express
npm install socket.io
npm install hiredis redis # hiredis to use c binding for redis => FAST :)
Voorbeeld downloaden
U kunt het volledige voorbeeld downloaden van mediafire.
Pakket uitpakken
unzip pbsb.zip # can also do via graphical interface if you prefer.
Wat zit er in de rits
./app.js
const PORT = 3000;
const HOST = 'localhost';
var express = require('express');
var app = module.exports = express.createServer();
app.use(express.staticProvider(__dirname + '/public'));
const redis = require('redis');
const client = redis.createClient();
const io = require('socket.io');
if (!module.parent) {
app.listen(PORT, HOST);
console.log("Express server listening on port %d", app.address().port)
const socket = io.listen(app);
socket.on('connection', function(client) {
const subscribe = redis.createClient();
subscribe.subscribe('pubsub'); // listen to messages from channel pubsub
subscribe.on("message", function(channel, message) {
client.send(message);
});
client.on('message', function(msg) {
});
client.on('disconnect', function() {
subscribe.quit();
});
});
}
./public/index.html
<html>
<head>
<title>PubSub</title>
<script src="/socket.io/socket.io.js"></script>
<script src="/javascripts/jquery-1.4.3.min.js"></script>
</head>
<body>
<div id="content"></div>
<script>
$(document).ready(function() {
var socket = new io.Socket('localhost', {port: 3000, rememberTransport: false/*, transports: ['xhr-polling']*/});
var content = $('#content');
socket.on('connect', function() {
});
socket.on('message', function(message){
content.prepend(message + '<br />');
}) ;
socket.on('disconnect', function() {
console.log('disconnected');
content.html("<b>Disconnected!</b>");
});
socket.connect();
});
</script>
</body>
</html>
Server starten
cd pbsb
node app.js
Browser starten
Het beste als u Google Chrome start (vanwege ondersteuning voor websockets, maar niet noodzakelijk). Bezoek http://localhost:3000
om voorbeeld te zien (in het begin zie je niets anders dan PubSub
als titel).
Maar op publish
naar kanaal pubsub
je zou een bericht moeten zien. Hieronder publiceren we "Hello world!"
naar de browser.
Van ./redis-cli
publish pubsub "Hello world!"