ember and websockets

33

Click here to load reader

Upload: steve-kinney

Post on 02-Jul-2015

625 views

Category:

Food


3 download

DESCRIPTION

Ember and WebSockets. I am writing this because because the more text I write makes the "virality score" on SlideShare go up and I'm all about gamification. Also, I had to export this to PowerPoint because SlideShare does't supper Keynote. WTF?

TRANSCRIPT

Page 1: Ember and WebSockets

Ember + WebSocketsEmber.js Denver, November 2014

Page 2: Ember and WebSockets

Hi. I'm Steve.@stevekinney

Page 3: Ember and WebSockets
Page 4: Ember and WebSockets

Hire our students, please: http://people.turing.io/

Page 5: Ember and WebSockets

What even are

WebSockets?

Page 6: Ember and WebSockets

WebSockets are an HTTP independent,

bi-directional, TCP-based protocol over

port 80 standardized in 2011 by the

IETF as RFC 6455.

Page 7: Ember and WebSockets

Duh.

Page 8: Ember and WebSockets

Why WebSockets?

• Notifications (e.g. Github prompting you to create a

pull request when you create a new branch)

• Document Collaboration

• Real-time Chat and Messaging

• JSON Patch

Page 9: Ember and WebSockets

Can I actually use

them?

Page 10: Ember and WebSockets
Page 11: Ember and WebSockets

A Traditional Example

var socket = io();

$('form').submit(function(){

socket.emit('chat message', $('#m').val());

$('#m').val('');

return false;

});

socket.on('chat message', function(msg){

$('#messages').append($('<li>').text(msg));

});

Page 12: Ember and WebSockets
Page 13: Ember and WebSockets

So, let's look at some code.

Page 14: Ember and WebSockets

stevekinney/socketry-client

stevekinney/socketry-server

Page 15: Ember and WebSockets
Page 16: Ember and WebSockets
Page 17: Ember and WebSockets

First, the server—in 15 lines.

var WebSocketServer = require('ws').Server;

var socket = new WebSocketServer({ port: 8080 });

socket.broadcast = function(data) {

this.clients.forEach(function (client) {

client.send(data);

});

};

socket.on('connection', function(connection) {

connection.on('message', function(message) {

console.log('Received: %s', message);

socket.broadcast(message);

});

});

Page 18: Ember and WebSockets

Approach #1:

Controllers

Page 19: Ember and WebSockets

Let's create a singleton

controller.

export default Ember.Controller.extend({});

Page 20: Ember and WebSockets

// ApplicationController

export default Ember.ArrayController.extend({

needs: ['websocket'],

});

Page 21: Ember and WebSockets

// WebsocketController

export default Ember.Controller.extend({

_setup: function () { … }.on('init')

});

Page 22: Ember and WebSockets
Page 23: Ember and WebSockets

Approach #2:

Services*

Page 24: Ember and WebSockets

Coming soon…

Page 25: Ember and WebSockets

// app/services/geolocation.js

export default Ember.Service.extend({

availableIn: ['controllers', 'routes']

// Implementation goes here.

});

// app/controllers/nearby-tweets.js

export default Ember.ArrayController.extend({

fetchNearbyTweets: function() {

this.geolocation.getPosition().then(function() {

// Profit

});

}

});

Page 26: Ember and WebSockets

Can I actually use

them?

Page 27: Ember and WebSockets
Page 28: Ember and WebSockets
Page 29: Ember and WebSockets

But, if you can emulate

services today.

Page 30: Ember and WebSockets
Page 31: Ember and WebSockets

ember generate service websocket

installing

create app/initializers/websocket-service.js

create app/services/websocket.js

Page 32: Ember and WebSockets
Page 33: Ember and WebSockets

Thank you.