6. SETTING THE CONNECTION ON THE CLIENT
function connectSocket() {
socket = eio("http://localhost:8080/");
socket.onopen = function() {
socket.onmessage = function(package) {
// Handling received messages
};
};
socket.onclose = function() {
console.log("Disconnected from websocket");
connectionAttempts++;
if (connectionAttempts < 10) {
connectSockets();
}
}
}
7. SENDING AN OBJECT FROM THE CLIENT
var newMessage = {
owner: ‚Gareth‛,
message: ‚Hello there‛
}
var action = ‚greetings‛;
sendMessage(action, data);
function sendMessage(action, data) {
var socketPackage = { action: action, data: data }
this.socket.send(JSON.stringify(socketPackage));
}
8. LISTENING ON THE SERVER
socket.on('connection', function (client) {
client.send('123456');
client.on('message', function (data) {
for (var key in socket.clients ) {
if(typeof client.id !== 'undefined') {
if(key == client.id) {
continue;
}
}
socket.clients[key].send(data);
}
});
});
9. REMEMBER TO ALLOW CROSS DOMAINS IN
EXPRESS!
var app = express();
app.configure(function() {
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
next();
});
});
10. RECEIVING AN OBJECT ON THE CLIENT
function connectSockets() {
socket = eio(‘http://localhost:8080/’);
socket.onopen = function() {
socket.onmessage = function(package) {
var socketPackage = JSON.parse(package.data);
if (socketPackage.action != null) {
switch(socketPackage.action) {
case ‘greetings’:
console.log(socketPackage.data.message);
break;
}
}
};
};
}
14. REDIS TO THE RESCUE!
•
•
REDIS HAS A PUB/SUB QUEUE
HAVE ALL OUR SERVER INSTANCES PUBLISHING AND SUBSCRIBING TO THE
QUEUE
•
PASS MESSAGES BETWEEN SERVERS USING THE QUEUE
16. PUBLISH A RECEIVED MESSAGE THROUGH
REDIS
var pub = redis.createClient();
socket.on('connection', function (client) {
client.send('123456');
client.on('message', function (data) {
try
{
pub.publish('subscription-channel', data);
}
catch (err) {
console.log("Error publishing: " + err);
}
});
});
17. RECEIVING A MESSAGE FROM REDIS
var sub = redis.createClient();
sub.on('ready', function() {
sub.subscribe('subscription-channel');
sub.on('message', function(channel, message) {
for( var key in socket.clients ) {
socket.clients[key].send(message);
}
});
});