SlideShare une entreprise Scribd logo
1  sur  15
Télécharger pour lire hors ligne
websocket
          過去現在..未來?
              By Fillano




12年4月27日星期五
自我介紹
              • 卑微的IT工程師
              • Javascript技術狂熱者
              • 喜歡探索新技術
              • 渾名:fillano

12年4月27日星期五
websocket經驗
              • 2010年ITHelp鐵人賽後
              • GTUG HTML5 Hackathon
              • 以node.js實作過簡單的Hixie-76 Draft版
               本的websocket伺服器

              • 其實不多XD

12年4月27日星期五
Hixie 76
              • 時間:2010年
              • socket.io剛出現
              • handshake大不同
              • data frame大不同
              • 只能傳送utf-8字串

12年4月27日星期五
RFC 6455
              • 2011年底
              • handshake比較簡單
              • data frame大不同
              • 可傳送binary資料及utf-8字串
              • ping/pong frame

12年4月27日星期五
到底什麼是websocket
              • ⼀一套client side API(HTML5)
              • ⼀一個與HTTP相容的通訊協定(ex.
               hixie-76, hybi-10, RFC6455)

              • 提供client/server間雙向資料傳輸的機制
              • 除非⼀一方關閉連結,否則連結就是持續
               不斷的。關閉後需要從頭開始...



12年4月27日星期五
websocket life cycle
                  request / handshake
                  response / handshake
  時 客                                    伺
                        frames
  間 戶                                    服
    端                     ping           器
                         pong
                        frames
                         close

12年4月27日星期五
與http相容的特性
              • 類似⼀一個keep alive的request/response
              • client會送出request header
              • server會回覆response header
              • ⼀一些header資訊也可以同時利用,例如
                cookie
              • 也支援https的傳輸加密,wss://*

12年4月27日星期五
跟http不同的地方
              • header中許多欄位跟⼀一般http不同,用來
               傳遞特定資訊,或是做handshake

              • 連結是keep alive的,不會重複送出header
              • 資料傳送是雙向的
              • 資料傳送有特定的binary格式

12年4月27日星期五
client端的使用方式
              • 利用WebSocket這個constructor建立連結
               的instance

               • ex. new WebSocket(‘ws://localhost:8080,
                 [‘echo-protocol’,‘chat’])
              • 利用send()方法送資料
              • 利用message事件接收資料

12年4月27日星期五
server端的使用方式
              • 以node.js來說,就看你用哪個module
              • 目前支援比較好的是websocket-node
               (npm install -g websocket)
              • socket.io用的不⼀一定是websocket,它會
               優先使用flash做傳輸(請看他網站上的
               faq說明),所以我才選上面這個module
               來做測試


12年4月27日星期五
展示:多人共享白板



12年4月27日星期五
未來?
              • WebSocket與RFC6455本身應該不會有大
               變動

              • WebRTC目前制定的規格,還很難跟
               websocket直接整合,而且效能...

              • Microsoft提案Stream API,利用它可以把
               資料append到blob,這樣就有機會利用
               websocket轉送blob來播放audio/video


12年4月27日星期五
Q&A



12年4月27日星期五
參考資料
              • http://tools.ietf.org/html/rfc6455
              • http://www.whatwg.org/specs/web-apps/
                current-work/#network
              • http://dev.w3.org/html5/websockets/
              • http://www.w3.org/TR/FileAPI/
              • https://github.com/Worlize/WebSocket-
                Node/wiki/Documentation


12年4月27日星期五

Contenu connexe

En vedette

Industrial Summer Training for MCA/BCA/BE/B-Tech Students
Industrial Summer Training for MCA/BCA/BE/B-Tech StudentsIndustrial Summer Training for MCA/BCA/BE/B-Tech Students
Industrial Summer Training for MCA/BCA/BE/B-Tech StudentsTech Mentro
 
YOU DON'T HAVE TO BE A GROWN-UP...
YOU DON'T HAVE TO BE A GROWN-UP...YOU DON'T HAVE TO BE A GROWN-UP...
YOU DON'T HAVE TO BE A GROWN-UP...ccncinci
 
Power aware compilation demo
Power aware compilation demoPower aware compilation demo
Power aware compilation demoRajeev Nadgauda
 
A Day in the Life... of the Kaye Prox Food Bank
A Day in the Life... of the Kaye Prox Food BankA Day in the Life... of the Kaye Prox Food Bank
A Day in the Life... of the Kaye Prox Food Bankccncinci
 
Transit-Protect presentation 2014
Transit-Protect presentation 2014Transit-Protect presentation 2014
Transit-Protect presentation 2014Transit-Protect
 
Повышение эффективности использования частотного ресурса
Повышение эффективности использования частотного ресурсаПовышение эффективности использования частотного ресурса
Повышение эффективности использования частотного ресурсаTele2Russia
 
Speaking in Several Tongues, Metro 10/25/2012
Speaking in Several Tongues, Metro 10/25/2012Speaking in Several Tongues, Metro 10/25/2012
Speaking in Several Tongues, Metro 10/25/2012JANA CIOBANU
 
Useful Shareware / Freeware for Technical Communicators
Useful Shareware / Freeware for Technical CommunicatorsUseful Shareware / Freeware for Technical Communicators
Useful Shareware / Freeware for Technical CommunicatorsSTC-Philadelphia Metro Chapter
 
Tele2 Россия: итоги работы 2011 года
Tele2 Россия: итоги работы 2011 годаTele2 Россия: итоги работы 2011 года
Tele2 Россия: итоги работы 2011 годаTele2Russia
 
Clipping Diario Design 15/11/11 @ IED Barcelona
Clipping Diario Design 15/11/11 @ IED BarcelonaClipping Diario Design 15/11/11 @ IED Barcelona
Clipping Diario Design 15/11/11 @ IED BarcelonaIED Barcelona
 
全中國最美的女孩
全中國最美的女孩全中國最美的女孩
全中國最美的女孩susan10733
 
11기획b 이재용 내가 가장 공들인 캐릭터
11기획b 이재용 내가 가장 공들인 캐릭터11기획b 이재용 내가 가장 공들인 캐릭터
11기획b 이재용 내가 가장 공들인 캐릭터qwee998
 
Stypendium 3
Stypendium 3Stypendium 3
Stypendium 3ja_waszak
 

En vedette (20)

Industrial Summer Training for MCA/BCA/BE/B-Tech Students
Industrial Summer Training for MCA/BCA/BE/B-Tech StudentsIndustrial Summer Training for MCA/BCA/BE/B-Tech Students
Industrial Summer Training for MCA/BCA/BE/B-Tech Students
 
Boh
BohBoh
Boh
 
YOU DON'T HAVE TO BE A GROWN-UP...
YOU DON'T HAVE TO BE A GROWN-UP...YOU DON'T HAVE TO BE A GROWN-UP...
YOU DON'T HAVE TO BE A GROWN-UP...
 
Crm
CrmCrm
Crm
 
Power aware compilation demo
Power aware compilation demoPower aware compilation demo
Power aware compilation demo
 
A Day in the Life... of the Kaye Prox Food Bank
A Day in the Life... of the Kaye Prox Food BankA Day in the Life... of the Kaye Prox Food Bank
A Day in the Life... of the Kaye Prox Food Bank
 
Transit-Protect presentation 2014
Transit-Protect presentation 2014Transit-Protect presentation 2014
Transit-Protect presentation 2014
 
Повышение эффективности использования частотного ресурса
Повышение эффективности использования частотного ресурсаПовышение эффективности использования частотного ресурса
Повышение эффективности использования частотного ресурса
 
Speaking in Several Tongues, Metro 10/25/2012
Speaking in Several Tongues, Metro 10/25/2012Speaking in Several Tongues, Metro 10/25/2012
Speaking in Several Tongues, Metro 10/25/2012
 
Love Quotes
Love QuotesLove Quotes
Love Quotes
 
Useful Shareware / Freeware for Technical Communicators
Useful Shareware / Freeware for Technical CommunicatorsUseful Shareware / Freeware for Technical Communicators
Useful Shareware / Freeware for Technical Communicators
 
Tele2 Россия: итоги работы 2011 года
Tele2 Россия: итоги работы 2011 годаTele2 Россия: итоги работы 2011 года
Tele2 Россия: итоги работы 2011 года
 
Wic budapest 2011-pres
Wic budapest 2011-presWic budapest 2011-pres
Wic budapest 2011-pres
 
Clipping Diario Design 15/11/11 @ IED Barcelona
Clipping Diario Design 15/11/11 @ IED BarcelonaClipping Diario Design 15/11/11 @ IED Barcelona
Clipping Diario Design 15/11/11 @ IED Barcelona
 
Strategies for Career Success
Strategies for Career SuccessStrategies for Career Success
Strategies for Career Success
 
9. bbk tri kita
9. bbk tri kita9. bbk tri kita
9. bbk tri kita
 
全中國最美的女孩
全中國最美的女孩全中國最美的女孩
全中國最美的女孩
 
11기획b 이재용 내가 가장 공들인 캐릭터
11기획b 이재용 내가 가장 공들인 캐릭터11기획b 이재용 내가 가장 공들인 캐릭터
11기획b 이재용 내가 가장 공들인 캐릭터
 
Stypendium 3
Stypendium 3Stypendium 3
Stypendium 3
 
Mickey
MickeyMickey
Mickey
 

Similaire à Websocket talk in nodejs.tw

Node js q-con
Node js q-conNode js q-con
Node js q-conq3boy
 
Android vs e pub
Android vs e pubAndroid vs e pub
Android vs e pub永昇 陳
 
twMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart FactorytwMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart FactorytwMVC
 
difference between query string and hash
difference between query string and hashdifference between query string and hash
difference between query string and hashfool2fish
 
使用Javascript及HTML5打造協同運作系統
使用Javascript及HTML5打造協同運作系統使用Javascript及HTML5打造協同運作系統
使用Javascript及HTML5打造協同運作系統Hsu Ping Feng
 
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CDChen-Tien Tsai
 
Node.js Quick Tour
Node.js Quick TourNode.js Quick Tour
Node.js Quick Tourmyzykj
 
Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用iammutex
 
twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧twMVC
 
Make your DVR playground using DevStack
Make your DVR playground using DevStackMake your DVR playground using DevStack
Make your DVR playground using DevStackJiang Jun
 
Real time web实时信息流推送
Real time web实时信息流推送Real time web实时信息流推送
Real time web实时信息流推送yongboy
 
Real-Time Web实时信息流推送
Real-Time Web实时信息流推送Real-Time Web实时信息流推送
Real-Time Web实时信息流推送yongboy
 
Top100summit 秀野堂主-做最好的html5游戏 copy
Top100summit 秀野堂主-做最好的html5游戏 copyTop100summit 秀野堂主-做最好的html5游戏 copy
Top100summit 秀野堂主-做最好的html5游戏 copydrewz lin
 
那些年,我們一起用過的 Xcode
那些年,我們一起用過的 Xcode那些年,我們一起用過的 Xcode
那些年,我們一起用過的 XcodeMikimoto Chuang
 
Zh120226techparty jeff kit-ios-toolbox
Zh120226techparty jeff kit-ios-toolboxZh120226techparty jeff kit-ios-toolbox
Zh120226techparty jeff kit-ios-toolboxZoom Quiet
 
Eventmachine Websocket 實戰
Eventmachine Websocket 實戰Eventmachine Websocket 實戰
Eventmachine Websocket 實戰Mu-Fan Teng
 
How to ASP.NET MVC4
How to ASP.NET MVC4How to ASP.NET MVC4
How to ASP.NET MVC4Daniel Chou
 
01 DevOps and Azure DevOps overview
01 DevOps and Azure DevOps overview01 DevOps and Azure DevOps overview
01 DevOps and Azure DevOps overviewAlan Tsai
 
No sql@vip new
No sql@vip newNo sql@vip new
No sql@vip newChao Zhu
 

Similaire à Websocket talk in nodejs.tw (20)

Node js q-con
Node js q-conNode js q-con
Node js q-con
 
Android vs e pub
Android vs e pubAndroid vs e pub
Android vs e pub
 
twMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart FactorytwMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart Factory
 
Html5
Html5Html5
Html5
 
difference between query string and hash
difference between query string and hashdifference between query string and hash
difference between query string and hash
 
使用Javascript及HTML5打造協同運作系統
使用Javascript及HTML5打造協同運作系統使用Javascript及HTML5打造協同運作系統
使用Javascript及HTML5打造協同運作系統
 
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CD
 
Node.js Quick Tour
Node.js Quick TourNode.js Quick Tour
Node.js Quick Tour
 
Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用Mysql HandleSocket技术在SNS Feed存储中的应用
Mysql HandleSocket技术在SNS Feed存储中的应用
 
twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧
 
Make your DVR playground using DevStack
Make your DVR playground using DevStackMake your DVR playground using DevStack
Make your DVR playground using DevStack
 
Real time web实时信息流推送
Real time web实时信息流推送Real time web实时信息流推送
Real time web实时信息流推送
 
Real-Time Web实时信息流推送
Real-Time Web实时信息流推送Real-Time Web实时信息流推送
Real-Time Web实时信息流推送
 
Top100summit 秀野堂主-做最好的html5游戏 copy
Top100summit 秀野堂主-做最好的html5游戏 copyTop100summit 秀野堂主-做最好的html5游戏 copy
Top100summit 秀野堂主-做最好的html5游戏 copy
 
那些年,我們一起用過的 Xcode
那些年,我們一起用過的 Xcode那些年,我們一起用過的 Xcode
那些年,我們一起用過的 Xcode
 
Zh120226techparty jeff kit-ios-toolbox
Zh120226techparty jeff kit-ios-toolboxZh120226techparty jeff kit-ios-toolbox
Zh120226techparty jeff kit-ios-toolbox
 
Eventmachine Websocket 實戰
Eventmachine Websocket 實戰Eventmachine Websocket 實戰
Eventmachine Websocket 實戰
 
How to ASP.NET MVC4
How to ASP.NET MVC4How to ASP.NET MVC4
How to ASP.NET MVC4
 
01 DevOps and Azure DevOps overview
01 DevOps and Azure DevOps overview01 DevOps and Azure DevOps overview
01 DevOps and Azure DevOps overview
 
No sql@vip new
No sql@vip newNo sql@vip new
No sql@vip new
 

Websocket talk in nodejs.tw

  • 1. websocket 過去現在..未來? By Fillano 12年4月27日星期五
  • 2. 自我介紹 • 卑微的IT工程師 • Javascript技術狂熱者 • 喜歡探索新技術 • 渾名:fillano 12年4月27日星期五
  • 3. websocket經驗 • 2010年ITHelp鐵人賽後 • GTUG HTML5 Hackathon • 以node.js實作過簡單的Hixie-76 Draft版 本的websocket伺服器 • 其實不多XD 12年4月27日星期五
  • 4. Hixie 76 • 時間:2010年 • socket.io剛出現 • handshake大不同 • data frame大不同 • 只能傳送utf-8字串 12年4月27日星期五
  • 5. RFC 6455 • 2011年底 • handshake比較簡單 • data frame大不同 • 可傳送binary資料及utf-8字串 • ping/pong frame 12年4月27日星期五
  • 6. 到底什麼是websocket • ⼀一套client side API(HTML5) • ⼀一個與HTTP相容的通訊協定(ex. hixie-76, hybi-10, RFC6455) • 提供client/server間雙向資料傳輸的機制 • 除非⼀一方關閉連結,否則連結就是持續 不斷的。關閉後需要從頭開始... 12年4月27日星期五
  • 7. websocket life cycle request / handshake response / handshake 時 客 伺 frames 間 戶 服 端 ping 器 pong frames close 12年4月27日星期五
  • 8. 與http相容的特性 • 類似⼀一個keep alive的request/response • client會送出request header • server會回覆response header • ⼀一些header資訊也可以同時利用,例如 cookie • 也支援https的傳輸加密,wss://* 12年4月27日星期五
  • 9. 跟http不同的地方 • header中許多欄位跟⼀一般http不同,用來 傳遞特定資訊,或是做handshake • 連結是keep alive的,不會重複送出header • 資料傳送是雙向的 • 資料傳送有特定的binary格式 12年4月27日星期五
  • 10. client端的使用方式 • 利用WebSocket這個constructor建立連結 的instance • ex. new WebSocket(‘ws://localhost:8080, [‘echo-protocol’,‘chat’]) • 利用send()方法送資料 • 利用message事件接收資料 12年4月27日星期五
  • 11. server端的使用方式 • 以node.js來說,就看你用哪個module • 目前支援比較好的是websocket-node (npm install -g websocket) • socket.io用的不⼀一定是websocket,它會 優先使用flash做傳輸(請看他網站上的 faq說明),所以我才選上面這個module 來做測試 12年4月27日星期五
  • 13. 未來? • WebSocket與RFC6455本身應該不會有大 變動 • WebRTC目前制定的規格,還很難跟 websocket直接整合,而且效能... • Microsoft提案Stream API,利用它可以把 資料append到blob,這樣就有機會利用 websocket轉送blob來播放audio/video 12年4月27日星期五
  • 15. 參考資料 • http://tools.ietf.org/html/rfc6455 • http://www.whatwg.org/specs/web-apps/ current-work/#network • http://dev.w3.org/html5/websockets/ • http://www.w3.org/TR/FileAPI/ • https://github.com/Worlize/WebSocket- Node/wiki/Documentation 12年4月27日星期五