GAMMEL brug kun en reference
Afhængigheder
bruger express, socket.io, node_redis og sidst men ikke mindst prøvekoden fra media fire.
Installer node.js+npm(som ikke-rod)
Først bør du (hvis du ikke har gjort dette endnu) installere node.js+npm på 30 sekunder (den rigtige måde, for du bør IKKE 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
Installer afhængigheder
Efter du har installeret node+npm, skal du installere afhængigheder ved at udstede:
npm install express
npm install socket.io
npm install hiredis redis # hiredis to use c binding for redis => FAST :)
Download eksempel
Du kan downloade et komplet eksempel fra mediafire.
Udpak pakke
unzip pbsb.zip # can also do via graphical interface if you prefer.
Hvad er inde i lynlåsen
./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>
Start server
cd pbsb
node app.js
Start browser
Bedst hvis du starter google chrome (på grund af websockets support, men ikke nødvendigt). Besøg http://localhost:3000
for at se eksempel (i begyndelsen ser du ikke andet end PubSub
som titel).
Men på publish
til kanal pubsub
du skulle se en besked. Nedenfor udgiver vi "Hello world!"
til browseren.
Fra ./redis-cli
publish pubsub "Hello world!"