Download - [FT-8][banacorn] Socket.IO for Haskell Folks
![Page 1: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/1.jpg)
Socket.IO for Haskell Folks
![Page 2: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/2.jpg)
![Page 3: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/3.jpg)
![Page 4: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/4.jpg)
![Page 5: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/5.jpg)
Real-time Applications
![Page 6: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/6.jpg)
Regular HTTP
![Page 7: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/7.jpg)
Polling
![Page 8: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/8.jpg)
Long-Polling
![Page 9: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/9.jpg)
EventSource
![Page 10: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/10.jpg)
WebSocket
![Page 11: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/11.jpg)
WebSocket
![Page 12: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/12.jpg)
“TCP for the web”
![Page 13: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/13.jpg)
PROS
Bi-directional + Full-duplex !
Lower overhead !
Port 80
![Page 14: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/14.jpg)
CONSNot widely supported !
Still a draft*
![Page 15: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/15.jpg)
Socket.IO
![Page 16: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/16.jpg)
asdf
![Page 17: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/17.jpg)
“The cross-browser cross-device WebSocket”
![Page 18: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/18.jpg)
Browser Support
IE 5.5+ Safari 2+ Google Chrome 4+ Firefox 3+ Opera 10.61+
![Page 19: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/19.jpg)
Transport Support
WebSocket Flash Socket AJAX long polling AJAX multipart Forever iframe JSONP Polling
![Page 20: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/20.jpg)
socket.emit(‘news’, ‘hey!’); !
!
!
Server
![Page 21: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/21.jpg)
socket.on(‘news’, function (data) { console.log(data); // hey! }); !
Client
![Page 22: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/22.jpg)
socket.emit(‘news’, ‘hey!’); !
socket.on(‘ping’, function () { socket.emit(‘pong’); });
Server
![Page 23: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/23.jpg)
socket.on(‘news’, function (data) { console.log(data); // hey! }); !
socket.emit(‘ping’);
Client
![Page 24: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/24.jpg)
Originated from Node.js
![Page 25: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/25.jpg)
Now also available in many other languages
ErlangJava
Lua
Python
Perl
Go
C++
C
Objective-C
Haxe
Ruby
PHP
![Page 26: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/26.jpg)
Except for Haskell
![Page 27: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/27.jpg)
![Page 28: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/28.jpg)
socketio-0.1.0
![Page 29: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/29.jpg)
![Page 30: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/30.jpg)
socket.emit(‘news’, ‘hey!’); !
socket.on(‘ping’, function () { socket.emit(‘pong’); });
![Page 31: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/31.jpg)
emit “news” [“hey!”] !
on “ping” $ emit “pong” []
![Page 32: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/32.jpg)
Transport Support
WebSocket (80%) Flash Socket AJAX long polling AJAX multipart Forever iframe JSONP Polling
![Page 33: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/33.jpg)
Difficulties
![Page 34: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/34.jpg)
Transport Support
ಠ~ಠ
![Page 35: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/35.jpg)
Transport Support
WebSocket Flash Socket AJAX long polling AJAX multipart Forever iframe JSONP Polling
![Page 36: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/36.jpg)
Transport Support
WebSocket Flash Socket AJAX long polling AJAX multipart Forever iframe JSONP Polling
![Page 37: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/37.jpg)
“Premature optimization is the root of all evil”
![Page 38: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/38.jpg)
Monad Transformers
ಠ~ಠ
![Page 39: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/39.jpg)
![Page 40: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/40.jpg)
![Page 41: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/41.jpg)
!
KEEP
CALM AND
JUST
USE IT
![Page 42: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/42.jpg)
![Page 43: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/43.jpg)
Iteratee I/O
ಠ~ಠ
![Page 44: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/44.jpg)
![Page 45: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/45.jpg)
![Page 46: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/46.jpg)
![Page 47: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/47.jpg)
![Page 48: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/48.jpg)
String/Text/ByteString
ಠ~ಠ
![Page 49: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/49.jpg)
![Page 50: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/50.jpg)
{-# LANGUAGE OverloadedStrings #-}
![Page 51: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/51.jpg)
Open Source Community
ಠ~ಠ
![Page 52: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/52.jpg)
![Page 53: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/53.jpg)
![Page 54: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/54.jpg)
Originated from Node.js
![Page 55: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/55.jpg)
Cabal Hell
ಠ~ಠ
![Page 56: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/56.jpg)
> cabal uninstall cabal: unrecognised command: uninstall (try --help)
![Page 57: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/57.jpg)
![Page 58: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/58.jpg)
cabal-dev?
![Page 59: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/59.jpg)
LIVE DEMO
![Page 60: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/60.jpg)
![Page 62: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/62.jpg)
![Page 63: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/63.jpg)
TODO
![Page 64: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/64.jpg)
cabal-dev?
![Page 65: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/65.jpg)
banacorn/socket.io-haskell !
!
!
ALL CONTRIBUTIONS ARE WELCOME!
![Page 66: [FT-8][banacorn] Socket.IO for Haskell Folks](https://reader034.vdocument.in/reader034/viewer/2022052505/554f701ab4c905c8088b5508/html5/thumbnails/66.jpg)
THANKS! Questions?