Nous avons commencé un projet appelé bus.io
sur NPM. Cela devrait t'aider. Il simplifie la connexion des sockets à un sous-pub et leur distribue des messages.
Sur le serveur.
var express = require('express')
var app = express();
app.use(express.static(__dirname+'/public'));
var server = require('http').Server(app).listen(3000);
var bus = require('bus.io')(server);
Sur le client.
<script type="text/javascript src="/bus.io/bus.io.js">
var sock = io.connect();
sock.on('connect', function() {
sock.message().action('say').content('hello').deliver();
});
sock.on('say', function (msg) {
console.log(msg.content());
});
</script>
Cet exemple illustre la création d'un message et sa remise au serveur. Par défaut, le message retournera à l'expéditeur. Un "expéditeur" est un acteur et par défaut un expéditeur va envoyer un message à lui-même. Vous pouvez personnaliser l'acteur et la cible. Donc, par exemple, vous vouliez envoyer un message à tout le monde.
Sur le serveur, vous pouvez ajouter ceci pour forcer tous vos messages à aller à tout le monde.
sock.in(function (msg, sock, next) {
msg.target('everyone').deliver();
});
Ou sur le client.
sock.message().target('everyone').action('say').content('hello').deliver();
Il existe également un raccourci.
sock.message({target:'everyone', action:'say', content:'hello'}).deliver();
Vous pouvez également modifier la façon dont l'acteur est attribué, par défaut, il est le socket.id
.
bus.actor(function (sock, cb) {
//so if you had a session you could get the user name from the session
cb(null, sock.handshake.session.user);
});
Les messages sont automatiquement propagés du client à d'autres clients via le bus. Le bus est construit sur redis et socket.io.
Si vous avez des questions ou si vous souhaitez une caisse de contact d'aide notre http://turbonetix.io ou le projet sur github https://github.com/turbonetix/bus.io.git