GAMMEL använd endast en referens
Beroenden
använder express, socket.io, node_redis och sist men inte minst exempelkoden från media fire.
Installera node.js+npm(som icke-rot)
Först bör du (om du inte har gjort detta ännu) installera node.js+npm på 30 sekunder (på rätt sätt eftersom du INTE ska kör npm som 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
Installationsberoenden
Efter att du har installerat node+npm bör du installera beroenden genom att utfärda:
npm install express
npm install socket.io
npm install hiredis redis # hiredis to use c binding for redis => FAST :)
Ladda ned exempel
Du kan ladda ner komplett prov från mediafire.
Packa upp paketet
unzip pbsb.zip # can also do via graphical interface if you prefer.
Vad finns inuti zip
./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>
Starta server
cd pbsb
node app.js
Starta webbläsaren
Bäst om du startar google chrome (på grund av websockets stöd, men inte nödvändigt). Besök http://localhost:3000
för att se exempel (i början ser du inget annat än PubSub
som titel).
Men på publish
till kanal pubsub
du borde se ett meddelande. Nedan publicerar vi "Hello world!"
till webbläsaren.
Från ./redis-cli
publish pubsub "Hello world!"