F08: For real this time!

Real-time updates with Web Sockets

HTTP (REST)

Klient må requeste noe fra server

Pre-standard

Enter WebSockets

WebSockets + Node.js

var app = require('express')();

var server = app.listen(3456, function () {
    console.log('Server listening on port ' + 3456);
});

require('./sockets').connect(server);
var ws = require('ws');

exports.connect = function (httpServer) {
    var wsServer = new ws.Server({server: httpServer});

    wsServer.on('connection', function (socket) {
        socket.send('Hello, sockets!');
    });
};

sockets.js

normal server file

Viktige funksjoner

  • wsServer.on('connection', function(socket) { ... });

Skulle gjerne sagt at det var mange

socket.send('some message');

socket.on('message', function(message) { ... });

"Broadcast"

var clients = [];

wsServer.on('connection', function (socket) {
    clients.push(socket);
});

var broadcast = function (message) {
    clients.forEach(function (client) {
        client.send(message);
    }); 
};

Enkel klient: wscat

"cURL for WS"

WebSockets i Angular

app.run(function ($rootScope) {
    var url = 'ws://localhost:3456';
    var connection = new WebSocket(url);

    connection.onopen = function () {
        console.log('WebSocket opened!');
    };

    connection.onmessage = function (event) {
        var payload = JSON.parse(event.data);
        $rootScope.$broadcast('ws:' + payload.topic, payload.data);
    };
});
$scope.$on('ws:new_user', function(event, newUser) {
    $scope.$apply(function() {
        $scope.users.push(newUser);
    });
});

Demo

Time

Yay

PG6300-14-08: For real this time!

By theneva

PG6300-14-08: For real this time!

  • 661