[ft-8][banacorn] socket.io for haskell folks

Post on 10-May-2015

643 Views

Category:

Education

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Socket.IO for Haskell Folks --by banacorn --on Functional Thursday Meetup 8

TRANSCRIPT

Socket.IO for Haskell Folks

Real-time Applications

Regular HTTP

Polling

Long-Polling

EventSource

WebSocket

WebSocket

“TCP for the web”

PROS

Bi-directional + Full-duplex !

Lower overhead !

Port 80

CONSNot widely supported !

Still a draft*

Socket.IO

asdf

“The cross-browser cross-device WebSocket”

Browser Support

IE 5.5+ Safari 2+ Google Chrome 4+ Firefox 3+ Opera 10.61+

Transport Support

WebSocket Flash Socket AJAX long polling AJAX multipart Forever iframe JSONP Polling

socket.emit(‘news’, ‘hey!’); !

!

!

Server

socket.on(‘news’, function (data) { console.log(data); // hey! }); !

Client

socket.emit(‘news’, ‘hey!’); !

socket.on(‘ping’, function () { socket.emit(‘pong’); });

Server

socket.on(‘news’, function (data) { console.log(data); // hey! }); !

socket.emit(‘ping’);

Client

Originated from Node.js

Now also available in many other languages

ErlangJava

Lua

Python

Perl

Go

C++

C

Objective-C

Haxe

Ruby

PHP

Except for Haskell

socketio-0.1.0

socket.emit(‘news’, ‘hey!’); !

socket.on(‘ping’, function () { socket.emit(‘pong’); });

emit “news” [“hey!”] !

on “ping” $ emit “pong” []

Transport Support

WebSocket (80%) Flash Socket AJAX long polling AJAX multipart Forever iframe JSONP Polling

Difficulties

Transport Support

ಠ~ಠ

Transport Support

WebSocket Flash Socket AJAX long polling AJAX multipart Forever iframe JSONP Polling

Transport Support

WebSocket Flash Socket AJAX long polling AJAX multipart Forever iframe JSONP Polling

“Premature optimization is the root of all evil”

Monad Transformers

ಠ~ಠ

!

KEEP

CALM AND

JUST

USE IT

Iteratee I/O

ಠ~ಠ

String/Text/ByteString

ಠ~ಠ

{-# LANGUAGE OverloadedStrings #-}

Open Source Community

ಠ~ಠ

Originated from Node.js

Cabal Hell

ಠ~ಠ

> cabal uninstall cabal: unrecognised command: uninstall (try --help)

cabal-dev?

LIVE DEMO

http://banacorn.org:3000

TODO

cabal-dev?

banacorn/socket.io-haskell !

!

!

ALL CONTRIBUTIONS ARE WELCOME!

THANKS! Questions?

top related