Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
NodeJS + SocketIO
Search
Federico Ravasio
October 15, 2012
Programming
0
140
NodeJS + SocketIO
Lightning talk @ Codelovers.
Federico Ravasio
October 15, 2012
Tweet
Share
More Decks by Federico Ravasio
See All by Federico Ravasio
The art of Mocking
razielgn
1
170
Concurrency vs. Parallelism 2.0 - RubyDay 2013
razielgn
3
160
Concurrency vs. Parallelism - Codelovers 2013
razielgn
3
170
Guida intergalattica per contributori Open Source
razielgn
0
41
Other Decks in Programming
See All in Programming
Data Contracts In Practice With Debezium and Apache Flink
gunnarmorling
0
100
Increased Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
420
rbs-inlineを導入してYARDからRBSに移行する
euglena1215
1
300
API Platform for Laravel
dunglas
1
690
Amazon BedrockでサーバレスなAIお料理ボットを作成する!!
tosuri13
0
230
オートマトン学習しろ / Do automata learning
makenowjust
3
130
Patched fetch did not work
quramy
4
410
Modern Angular with the NGRX Signal Store New Rules for Your Architecture @BASTA! 2024 in Mainz
manfredsteyer
PRO
0
160
From Idea to IDE: Developing Plugins for Android Studio
thisaay
1
230
Modernisation Progressive d’Applications PHP
hhamon
0
110
意外とフォントが大事だった話 / Font Issues on Internationalization
fumi23
0
110
2024 컴포즈 정원사
jisungbin
0
150
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
326
21k
We Have a Design System, Now What?
morganepeng
48
7.1k
Product Roadmaps are Hard
iamctodd
PRO
48
10k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.4k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
227
52k
Fashionably flexible responsive web design (full day workshop)
malarkey
401
65k
Fireside Chat
paigeccino
31
2.9k
KATA
mclloyd
27
13k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
23
1.7k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
5
490
Intergalactic Javascript Robots from Outer Space
tanoku
268
26k
The Invisible Side of Design
smashingmag
296
50k
Transcript
+
Orientato agli eventi I/O asincrono Reactor pattern Google V8 Singolo
thread
Websocket con fallback Semplice messaggistica
None
“In attesa di uno straniero...” “Stai parlando con uno straniero,
salutalo!” Straniero: asl? Tu: 98 m antarctica Straniero: o_o” [Qualcuno lascia la chat]
Server
var waiting = []; // Lista client in attesa var
couples = {}; // { // clientID: stranger, // strangerID: client // ... // }
var io = SocketIO.listen(server); // server è un server HTTP
già inizializzato io.sockets.on('connection', function(client) { // ... });
io.sockets.on('connection', function(client) { if (waiting.length == 0) { waiting.push(client); client.emit('waiting');
} else { var stranger = waiting.pop(); couples[client.id] = stranger; couples[stranger.id] = client; client.emit('partner'); stranger.emit('partner'); } // ... });
io.sockets.on('connection', function(client) { // ... client.on('message', function(message) { couples[client.id].emit('message', message);
}); // ... });
io.sockets.on('connection', function(client) { // ... client.on('disconnect', function() { if (stranger
= couples[client.id]) { stranger.emit('left'); delete couples[stranger.id]; delete couples[client.id]; } }); });
Client
var socket = io.connect(); socket.on('waiting', function() { logMessage('Waiting for a
stranger...'); }); socket.on('partner', function() { logMessage('You are now chatting with...'); }); socket.on('message', function(message) { logMessage(message); }); socket.on('left', function() { this.logMessage('Stranger has left...'); socket.disconnect(); });
var leaveConversation = function() { logMessage('You have left...'); socket.disconnect(); };
var sendMessage = function(message) { socket.emit('message', message); logMessage(message); };
Demo!