Slide 1

Slide 1 text

通信聊天DIY 如何為我的應⽤用增加⼀一個IM功能? @Harry吳卓強 http://weibo.com/harryng [email protected] 13年5月6⽇日星期⼀一

Slide 2

Slide 2 text

My Experience... • Enterprise IM • IM on Cloud • Customer Service Solution 13年5月6⽇日星期⼀一

Slide 3

Slide 3 text

Why IM? • 企業內部通信 • 客⼾戶服務 13年5月6⽇日星期⼀一

Slide 4

Slide 4 text

Did you use? • XMPP • Socket.io • TowTruck • Faye • Red5 • Many more... 13年5月6⽇日星期⼀一

Slide 5

Slide 5 text

XMPP 13年5月6⽇日星期⼀一

Slide 6

Slide 6 text

XMPP • known as Jabber • XML • TCP / HTTP(s) • Mainly Java-based servers 13年5月6⽇日星期⼀一

Slide 7

Slide 7 text

13年5月6⽇日星期⼀一

Slide 8

Slide 8 text

XMPP 13年5月6⽇日星期⼀一

Slide 9

Slide 9 text

XMPP 13年5月6⽇日星期⼀一

Slide 10

Slide 10 text

XMPP • Too much resources • Relies on commercial solutions • Cost is high 13年5月6⽇日星期⼀一

Slide 11

Slide 11 text

Socket.io 13年5月6⽇日星期⼀一

Slide 12

Slide 12 text

Socket.io • JSON • Light weight • WebSocket • FlashSocket • Long Polling 13年5月6⽇日星期⼀一

Slide 13

Slide 13 text

Socket.io • Client Side: Multi-platforms • Server Side: Node.js • Compatible: • Recent Browsers • Libraries 13年5月6⽇日星期⼀一

Slide 14

Slide 14 text

Pub/Sub • Publish / Subscribe • Chat Room style 13年5月6⽇日星期⼀一

Slide 15

Slide 15 text

Socket.io on iPhone • DEMO 13年5月6⽇日星期⼀一

Slide 16

Slide 16 text

Good? Bad? • Goods: • Simple • Low Traffic • Bads: • New 13年5月6⽇日星期⼀一

Slide 17

Slide 17 text

XMPP (Jabber) Socket.io Data Format Web Technologies Technology History Users Scalability Features Setup XML JSON TCP HTTP HTTPS Polling Long-polling WebSocket FlashSocket jsonp-polling Java (OpenFire) Node.js 1999 2009 AOL (2008) Facebook (2010) Microsoft (2011) Skype (2011) Microsoft (2011) Linkedin (2012) Yahoo! (2012) Walmart (2012) Multiple nodes Nginx HA Proxy event stream security non-blocking event-driven Jabber Server Node.js server 13年5月6⽇日星期⼀一

Slide 18

Slide 18 text

Summary • Setup is NOT easy!! • Use 3rd-party Service!! 13年5月6⽇日星期⼀一