29
Uma breve história sobre o tempo com Socket.io & Node.js.

Uma breve história sobre o tempo com Socket.io e Node.js

Embed Size (px)

Citation preview

Uma breve história sobre o tempo com Socket.io & Node.js.

GUILHERMEODERDENGEDesenvolvedor JavaScript na Chute

http://github.com/chiefgui/

PollingInput Output

I/O

Short Polling

The force is with you, young Pinkman, but youare not a Jedi yet.

HIGHLIGHT

Simples implementação.

Long Polling

Is the force with you?

Yes, it is!

Am I your father?

Yes, you are!

Is Angular better than Backbone?

HIGHLIGHTS

✓ Simples implementação;✓ Relativamente econômico;

Você recebe uma resposta quando ela passar a existir.

✓ Relativamente inteligente.

WEBSOCKETSÉ um protocolo (ws://) que provê

um canal de comunicação “full-duplex” sobre uma única conexão TCP.

Comunicação “full-duplex”?

Hey, Pinkman.

What’s up, Mr. Vader?

✓ Relativamente simples implementação;✓ Econômico e inteligente;✓ Funciona na maioria dos browsers modernos;✓ Nasceu para o propósito do tempo-real na web;

Após o handshake feito pelo HTTP, tudo é WebSocket.

HIGHLIGHTS

A implementação deixa de ser relativa.Agora ela é só simples.

npm install ——save socket.io

<script src="/socket.io/socket.io.js"></script><script> var socket = io(); </script>

index.html

GET ‘/index.html’

index.htmlvar socket = io();

Emite um evento “connection”

var io = require ('socket.io')(80);

io.on('connection', function () { console.log(‘a user is connected'); });

'connection'

Built-in Events

disconnect reconnect reconnect_attempt

index.html

Hey, TDC! You rock!

$('form').on('submit', function () { socket.emit('message:send', $('input').val()); });

<script src=“jquery.js"></script> <script src="/socket.io/socket.io.js"></script> <script> var socket = io();

</script>

var io = require ('socket.io')(80);

io.on('connection', function (socket) { console.log(‘a user is connected’);

});

socket.on('message:send', function (message) { io.emit('message:received', message); });

'message:send''message:received'

socket.on(‘message:received', function (message) { $(‘.messages’).prepend('<li>' + message + ‘</li>'); });

.emit

.onI/O

Namespaces

socket.of(‘/chat’).emit(‘message:send’, message);socket.of(‘/analytics’).emit(‘user:click’, axis);

socket.of(‘/chat’).on(‘message:send’, function (message) {});socket.of(‘/analytics’).on(‘user:click’, function (axis) {});

<script> var chatSocket = io(‘/chat’); var analyticsSocket = io(‘/analytics’); </script>

socket.broadcast.emit(‘notification’, something);

socket.broadcast.on(‘notification’, function () {});

socket.broadcast.emit(‘notification’, something);

socket.broadcast.on(‘notification’, function () {});

broadcast emite para todos os clientes dentro de um socket, exceto o emissor.

io.of(‘/chat’).on(‘connection’, function (socket) { socket.broadcast.emit('something', { to: ‘someone’ }); });

io.of(‘/analytics’);

Roomsio.of(‘/chat’).on(‘connection’, function (socket) { socket.join(‘trilha javascript’); });

io.to(‘trilha javascript’).emit(‘message’, { message: ‘Hello!’ });

var socket = io(‘/chat’);

chat.html

DETALHES IMPORTANTES

- Preocupe-se com segurança quando trabalhar com WebSockets;

- Socket.IO é uma opção escalável às técnicas de polling;

- Socket.IO é simples. Mesmo.

http://socket.io/