hangouts in 30 minutes socket.io

19
Hangouts in 30 minutes with Socket.io Speaker: Aleksandar Mihajlovski

Upload: aleksandar-mihajlovski

Post on 17-Feb-2017

325 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Hangouts in 30 minutes Socket.io

Hangouts in 30 minutes with Socket.io

Speaker:Aleksandar Mihajlovski

Page 2: Hangouts in 30 minutes Socket.io

Aleksandar MihajlovskiFront end developer at Polar Cape Consulting, working mainly with JavaScript frameworks for developing either web or hybrid mobile applications.

Follow me at: Twitter: https://twitter.com/mihajlovskiaLinkedIn: https://www.linkedin.com/in/amihajlovskiGitHub: https://github.com/amihajlovski

Page 3: Hangouts in 30 minutes Socket.io

What is live streaming?

• Live streaming refers to content delivered live over the Internet, requires a form of source media (e.g. a video camera, an audio interface, screen capture software), an encoder to digitize the content, a media publisher, and a content delivery network to distribute and deliver the content.

Page 4: Hangouts in 30 minutes Socket.io

Why to use it?

• Conversations• Competitions• Teaching lessons

Page 5: Hangouts in 30 minutes Socket.io

How to implement?

Page 6: Hangouts in 30 minutes Socket.io

• Node.js uses an event-driven, non-blocking I/O model, which makes it lightweight.

• In simple words Node.js is “server-side JavaScript”

• In not-so-simple words Node.js is a high-performance network applications framework, well optimized for high concurrent environments.

Page 7: Hangouts in 30 minutes Socket.io

• WebSockets is an advanced technology that makes it possible to open an interactive communication session between the user's browser and a server

• Socket.io is a framework that creates a persistent, real time, connection between server and client.

• Works on every platform, browser, device.• Mainly used for • Instant messaging and chat • Binary streaming (image/video/audio)

Page 8: Hangouts in 30 minutes Socket.io

• WebRTC offers real time communication natively from a web browser.

• WebRTC is a media engine with JavaScript API.• MediaStream• RTCPeerConnection• RTCDataChannel

Page 9: Hangouts in 30 minutes Socket.io

• MediaStream• Acquiring audio and video from the browser

• navigator.webkitGetUserMedia• navigator.mozGetUserMedia

Page 10: Hangouts in 30 minutes Socket.io

• RTCPeerConnection

• Peer to peer communication• Connection state (connecting, new, connected, disconnected,

failed, closed) • Signaling state (stable, closed..)• Security type (reliable / unreliable)• Bandwidth management

Page 11: Hangouts in 30 minutes Socket.io

• RTCDataChannel• Flow control (size of data)• Congestion control (latency detection)• Binary type (Blob or ArrayBuffer)• Direct messages

Page 12: Hangouts in 30 minutes Socket.io

• Triangle

Architectures

Page 13: Hangouts in 30 minutes Socket.io

Architectures• Trapezoid

Page 14: Hangouts in 30 minutes Socket.io

Compatibility

Page 15: Hangouts in 30 minutes Socket.io

• Live streaming with WebRTC only runs under HTTPS

• For testing purposes specific IP address / port should be allowed in the browser

Limitations

Page 16: Hangouts in 30 minutes Socket.io

Demo

Page 17: Hangouts in 30 minutes Socket.io

Conclusion• Help in communicating only with specific people.

• Upgrade • Chatting / Multiple clients

• Similar implementation with: • Meeting.js, PeerJS, SimpleWebRTC… • Java Spring + Sock.js (client)

Page 18: Hangouts in 30 minutes Socket.io

Questions?

Page 19: Hangouts in 30 minutes Socket.io

Discussion• How to implement live streaming application with more than

two clients?