SlideShare a Scribd company logo
1 of 27
The WebSocket Protocol
joseph@艾鍗學院
2016/09/11
HTTP Issue
Depends on Request / Response architecture
• Only client can send Requests
• Server can only Respond to Requests
• Can’t send another Request before Response
Too much traffic overhead & header on every
Request / Response
HTTP is Good For Docs Not Apps
HTTP Header (too much traffic overhead!!)
HTTP Client
Server
HTTP 改善方法
避免一來一回: 使用AJAX 達到非同步通訊
(但依然需要發出請求, 因為這還是polling)
避免過多的polling traffic ,使用Long Polling
(這也會消耗伺服器頻寬和資源,且還是half-duplex)
固定http Header size且改成binary協定,
且要做成 Full-duplex
各種Web 通訊方法
Long Polling技術
An attempt to offer realtime server interaction, using a
persistent or long-lasting HTTP connection between the
server and the client.
The browser makes an Ajax-style request to the server, which
is kept open until the server has new data to send to the
browser, which is sent to the browser in a complete response.
The browser initiates a new long polling request in order to
obtain subsequent events.
Specific technologies:
WebSockets - Sockets on the Web
● Part of HTML5
● W3C API and IETF Protocol (RFC 6455 )
● Full-duplex, bidirectional communication
● Unsecured (TCP) and secured (SSL) modes
● Traverses firewalls, proxies and routers
● Text (UTF-8) and binary data
● Ping/Pong messages for keep-alive
● Share ports 80 and 443 with HTTP/HTTPS
WebSocket
A WebSocket is a standard bidirectional TCP socket between
the client and the server.
The socket starts out as a HTTP connection and then
"Upgrades" to a TCP socket after a HTTP handshake.
After the handshake, either side can send data with full
duplex mode
WebSocket Client WebSocket Server
WebSocket優點
• 傳送的HTTP Request Header僅2bytes
• 伺服器可主動Push資料給用戶端,而不是總是傳統HTTP
Request/Response的Cycle(half-duplex),
WebSocket Connection Process
The client requesting a webSocket connection, sends an HTTP request to
the server on port 80.
That HTTP request is a perfectly legal HTTP request, but it has a header
included on it Upgrade: websocket.
If the server supports the webSocket protocol, then it responds with a
legal HTTP response with a 101 status code that includes a
header Connection: Upgrade.
At that point, both sides then switch protocols to the webSocket protocol
and all future communication on that socket is done using the data format
for the webSocket frame.
Any other incoming HTTP requests that do not contain
the upgrade request header are treated as normal HTTP requests
ScreenShot From WireShark
透過HTTP請求升級
成WebSocket通訊
HTTP "101 Switching
Protocols"
同意接受升級
Packet Opcodes (Types)
0 - continuation frame
1 - text frame (UTF-8)
2 - binary frame
3-7 - reserved (data)
8 - connection close
9 - ping
10 - pong
11-15 - reserved (control)
WebSocket frame
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
F
I
N
R
S
V
1
R
S
V
2
R
S
V
3
opcode(4)
M
A
S
K
payload len(7) extended payload len(16/64)
extended payload len continued(16/64)
masking key(0/32)
masking key continued payload ...
The WebSockets API
socket.io
socket.io : Cross browser way to do JavaScript-based real time
communication is
socket.io uses WebSockets if the client supports it, and falls
back on other things if it’s not, and even has AJAX polling and
multi-part streaming
Sending and receiving events
Socket.IO allows you to emit and receive custom events.
Besides connect, message and disconnect, you can emit
custom events
Socket.IO allows you to emit and receive custom events. Besides connect, message and disconnect, you can emit custom events:
Node.js Socket.IO (Web Socket Server)
npm install socket.io
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket){
socket.on('chat message', function(msg){
io.emit('chat message', msg);
});
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
io代表所有sockets
socket 代表單一連入的socket
Node.js Socket.IO (Web Socket Client)
<body>
<ul id="messages"></ul>
<form action="">
<input id="m" autocomplete="off" /><button>Send</button>
</form>
<script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script>
var socket = io();
$('form').submit(function(){
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
socket.on('chat message', function(msg){
$('#messages').append($('<li>').text(msg));
});
</script>
</body>
實驗: Websocket
探討:
使用AJAX由於Client不斷發出HTTP Request給Server確認是
否有資料回傳,而HTTP Request Header占了大量的Bytes,
傳送時不僅占了大量網路頻寬,對Server資源的消耗量也
會變大。
實驗: Polling SetInterval() 與SetTimeout() 差異
輪詢(polling)是讓瀏覽器每隔一段時間就自動送出一個
HTTP 請求給伺服器
使用setInterval() 可能會有這個問題!
a=1 a=2a=0 a=1 a=2
a=1
Time
使用setTimeout() 可以避免錯亂!
Using setTimeout() doesn’t guarantee execution on a fixed
interval per se. But, it does guarantee that the previous
interval has completed before the next interval is called
a=1 a=2a=0 a=1 a=2
Time
Read More
• Socket.IO : http://socket.io
• RFC 6455 - The WebSocket Protocol - IETF Tools

More Related Content

What's hot

Hypertext transfer protocol (http)
Hypertext transfer protocol (http)Hypertext transfer protocol (http)
Hypertext transfer protocol (http)
johnny19910916
 

What's hot (20)

ARM CoAP Tutorial
ARM CoAP TutorialARM CoAP Tutorial
ARM CoAP Tutorial
 
Http protocol
Http protocolHttp protocol
Http protocol
 
HTTP/2
HTTP/2HTTP/2
HTTP/2
 
HTTP Basic
HTTP BasicHTTP Basic
HTTP Basic
 
Hypertext Transfer Protocol
Hypertext Transfer ProtocolHypertext Transfer Protocol
Hypertext Transfer Protocol
 
IoT Protocol ( 22 Aug 2015 )
IoT Protocol ( 22 Aug 2015 )IoT Protocol ( 22 Aug 2015 )
IoT Protocol ( 22 Aug 2015 )
 
Http and its Applications
Http and its ApplicationsHttp and its Applications
Http and its Applications
 
HTTP Protocol Basic
HTTP Protocol BasicHTTP Protocol Basic
HTTP Protocol Basic
 
JavaZone 2016 : MQTT and CoAP for the Java Developer
JavaZone 2016 : MQTT and CoAP for the Java DeveloperJavaZone 2016 : MQTT and CoAP for the Java Developer
JavaZone 2016 : MQTT and CoAP for the Java Developer
 
application layer protocols
application layer protocolsapplication layer protocols
application layer protocols
 
Http - All you need to know
Http - All you need to knowHttp - All you need to know
Http - All you need to know
 
Web technology
Web technologyWeb technology
Web technology
 
Http
HttpHttp
Http
 
Design patternsforiot
Design patternsforiotDesign patternsforiot
Design patternsforiot
 
Internet of Things (IoT) protocols COAP MQTT OSCON2014
Internet of Things (IoT) protocols  COAP MQTT OSCON2014Internet of Things (IoT) protocols  COAP MQTT OSCON2014
Internet of Things (IoT) protocols COAP MQTT OSCON2014
 
Hypertext transfer protocol (http)
Hypertext transfer protocol (http)Hypertext transfer protocol (http)
Hypertext transfer protocol (http)
 
Hypertext transfer protocol (http)
Hypertext transfer protocol (http)Hypertext transfer protocol (http)
Hypertext transfer protocol (http)
 
CoAP protocol -Internet of Things(iot)
CoAP protocol -Internet of Things(iot)CoAP protocol -Internet of Things(iot)
CoAP protocol -Internet of Things(iot)
 
Lec 7(HTTP Protocol)
Lec 7(HTTP Protocol)Lec 7(HTTP Protocol)
Lec 7(HTTP Protocol)
 
MQTT and CoAP
MQTT and CoAPMQTT and CoAP
MQTT and CoAP
 

Viewers also liked

Android動態ui介面設計
Android動態ui介面設計Android動態ui介面設計
Android動態ui介面設計
艾鍗科技
 
Android進階UI控制元件
Android進階UI控制元件Android進階UI控制元件
Android進階UI控制元件
艾鍗科技
 

Viewers also liked (20)

Tutorial1: mbed開發快速上手
Tutorial1: mbed開發快速上手Tutorial1: mbed開發快速上手
Tutorial1: mbed開發快速上手
 
ARM ® mbed™ 平台之研究及實作
ARM ® mbed™ 平台之研究及實作ARM ® mbed™ 平台之研究及實作
ARM ® mbed™ 平台之研究及實作
 
Bluemix Node-Red Part II
Bluemix Node-Red Part IIBluemix Node-Red Part II
Bluemix Node-Red Part II
 
Bluemix node red-part iii
Bluemix node red-part iiiBluemix node red-part iii
Bluemix node red-part iii
 
Deploy mbed IoT cloud
Deploy mbed IoT cloudDeploy mbed IoT cloud
Deploy mbed IoT cloud
 
Android動態ui介面設計
Android動態ui介面設計Android動態ui介面設計
Android動態ui介面設計
 
智能風扇
智能風扇智能風扇
智能風扇
 
SPI Interface
SPI InterfaceSPI Interface
SPI Interface
 
mbed-os 3.0 modules dependency graph
mbed-os 3.0 modules dependency graphmbed-os 3.0 modules dependency graph
mbed-os 3.0 modules dependency graph
 
Front-end technologies for Wonderful User Experience through Websites
Front-end technologies for Wonderful User Experience through WebsitesFront-end technologies for Wonderful User Experience through Websites
Front-end technologies for Wonderful User Experience through Websites
 
鼎鈞數位行銷360行app多元產業企劃課程
鼎鈞數位行銷360行app多元產業企劃課程鼎鈞數位行銷360行app多元產業企劃課程
鼎鈞數位行銷360行app多元產業企劃課程
 
婚饗Love行動婚宴系統
婚饗Love行動婚宴系統婚饗Love行動婚宴系統
婚饗Love行動婚宴系統
 
Android進階UI控制元件
Android進階UI控制元件Android進階UI控制元件
Android進階UI控制元件
 
機械手臂應用
機械手臂應用機械手臂應用
機械手臂應用
 
農業物聯: 影像辨識之開花資訊系統
農業物聯: 影像辨識之開花資訊系統農業物聯: 影像辨識之開花資訊系統
農業物聯: 影像辨識之開花資訊系統
 
心電圖的研究和實作
心電圖的研究和實作心電圖的研究和實作
心電圖的研究和實作
 
保全機器人與居家防護系統實作
保全機器人與居家防護系統實作保全機器人與居家防護系統實作
保全機器人與居家防護系統實作
 
系統程式 -- 第 0 章
系統程式 -- 第 0 章系統程式 -- 第 0 章
系統程式 -- 第 0 章
 
Android 介面設計
Android 介面設計Android 介面設計
Android 介面設計
 
LAS16-112: mbed OS Technical Overview
LAS16-112: mbed OS Technical OverviewLAS16-112: mbed OS Technical Overview
LAS16-112: mbed OS Technical Overview
 

Similar to Websocket

WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
WebSockets: The Current State of the Most Valuable HTML5 API for Java DevelopersWebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
Viktor Gamov
 
Dev con kolkata 2012 websockets
Dev con kolkata 2012   websocketsDev con kolkata 2012   websockets
Dev con kolkata 2012 websockets
SANKARSAN BOSE
 

Similar to Websocket (20)

Webinar slides "Building Real-Time Collaborative Web Applications"
Webinar slides "Building Real-Time Collaborative Web Applications"Webinar slides "Building Real-Time Collaborative Web Applications"
Webinar slides "Building Real-Time Collaborative Web Applications"
 
Building real-time-collaborative-web-applications
Building real-time-collaborative-web-applicationsBuilding real-time-collaborative-web-applications
Building real-time-collaborative-web-applications
 
Web-Socket
Web-SocketWeb-Socket
Web-Socket
 
ClientServer Websocket.pptx
ClientServer Websocket.pptxClientServer Websocket.pptx
ClientServer Websocket.pptx
 
WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
WebSockets: The Current State of the Most Valuable HTML5 API for Java DevelopersWebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
WebSockets: The Current State of the Most Valuable HTML5 API for Java Developers
 
Building Websocket Applications with GlassFish and Grizzly
Building Websocket Applications with GlassFish and GrizzlyBuilding Websocket Applications with GlassFish and Grizzly
Building Websocket Applications with GlassFish and Grizzly
 
Decoding real time web communication
Decoding real time web communicationDecoding real time web communication
Decoding real time web communication
 
Taking a Quantum Leap with Html 5 WebSocket
Taking a Quantum Leap with Html 5 WebSocketTaking a Quantum Leap with Html 5 WebSocket
Taking a Quantum Leap with Html 5 WebSocket
 
Building Next Generation Real-Time Web Applications using Websockets
Building Next Generation Real-Time Web Applications using WebsocketsBuilding Next Generation Real-Time Web Applications using Websockets
Building Next Generation Real-Time Web Applications using Websockets
 
SenchaCon 2016: How to Give your Sencha App Real-time Web Performance - James...
SenchaCon 2016: How to Give your Sencha App Real-time Web Performance - James...SenchaCon 2016: How to Give your Sencha App Real-time Web Performance - James...
SenchaCon 2016: How to Give your Sencha App Real-time Web Performance - James...
 
Ws
WsWs
Ws
 
Using communication and messaging API in the HTML5 world - GIl Fink, sparXsys
Using communication and messaging API in the HTML5 world - GIl Fink, sparXsysUsing communication and messaging API in the HTML5 world - GIl Fink, sparXsys
Using communication and messaging API in the HTML5 world - GIl Fink, sparXsys
 
Websocket
WebsocketWebsocket
Websocket
 
WebSockets in JEE 7
WebSockets in JEE 7WebSockets in JEE 7
WebSockets in JEE 7
 
Real time web apps
Real time web appsReal time web apps
Real time web apps
 
Web Real-time Communications
Web Real-time CommunicationsWeb Real-time Communications
Web Real-time Communications
 
Dev con kolkata 2012 websockets
Dev con kolkata 2012   websocketsDev con kolkata 2012   websockets
Dev con kolkata 2012 websockets
 
Real-Time with Flowdock
Real-Time with FlowdockReal-Time with Flowdock
Real-Time with Flowdock
 
Using Communication and Messaging API in the HTML5 World
Using Communication and Messaging API in the HTML5 WorldUsing Communication and Messaging API in the HTML5 World
Using Communication and Messaging API in the HTML5 World
 
Camelone-2012 HTML5 WebSocket ActiveMQ/Camel
Camelone-2012 HTML5 WebSocket ActiveMQ/CamelCamelone-2012 HTML5 WebSocket ActiveMQ/Camel
Camelone-2012 HTML5 WebSocket ActiveMQ/Camel
 

More from 艾鍗科技

More from 艾鍗科技 (20)

TinyML - 4 speech recognition
TinyML - 4 speech recognition TinyML - 4 speech recognition
TinyML - 4 speech recognition
 
Appendix 1 Goolge colab
Appendix 1 Goolge colabAppendix 1 Goolge colab
Appendix 1 Goolge colab
 
Project-IOT於餐館系統的應用
Project-IOT於餐館系統的應用Project-IOT於餐館系統的應用
Project-IOT於餐館系統的應用
 
02 IoT implementation
02 IoT implementation02 IoT implementation
02 IoT implementation
 
Tiny ML for spark Fun Edge
Tiny ML for spark Fun EdgeTiny ML for spark Fun Edge
Tiny ML for spark Fun Edge
 
Openvino ncs2
Openvino ncs2Openvino ncs2
Openvino ncs2
 
Step motor
Step motorStep motor
Step motor
 
2. 機器學習簡介
2. 機器學習簡介2. 機器學習簡介
2. 機器學習簡介
 
5.MLP(Multi-Layer Perceptron)
5.MLP(Multi-Layer Perceptron) 5.MLP(Multi-Layer Perceptron)
5.MLP(Multi-Layer Perceptron)
 
3. data features
3. data features3. data features
3. data features
 
心率血氧檢測與運動促進
心率血氧檢測與運動促進心率血氧檢測與運動促進
心率血氧檢測與運動促進
 
利用音樂&情境燈幫助放鬆
利用音樂&情境燈幫助放鬆利用音樂&情境燈幫助放鬆
利用音樂&情境燈幫助放鬆
 
IoT感測器驅動程式 在樹莓派上實作
IoT感測器驅動程式在樹莓派上實作IoT感測器驅動程式在樹莓派上實作
IoT感測器驅動程式 在樹莓派上實作
 
無線聲控遙控車
無線聲控遙控車無線聲控遙控車
無線聲控遙控車
 
最佳光源的研究和實作
最佳光源的研究和實作最佳光源的研究和實作
最佳光源的研究和實作
 
無線監控網路攝影機與控制自走車
無線監控網路攝影機與控制自走車無線監控網路攝影機與控制自走車
無線監控網路攝影機與控制自走車
 
Reinforcement Learning
Reinforcement LearningReinforcement Learning
Reinforcement Learning
 
Linux Device Tree
Linux Device TreeLinux Device Tree
Linux Device Tree
 
人臉辨識考勤系統
人臉辨識考勤系統人臉辨識考勤系統
人臉辨識考勤系統
 
智慧家庭Smart Home
智慧家庭Smart Home智慧家庭Smart Home
智慧家庭Smart Home
 

Recently uploaded

scipt v1.pptxcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
scipt v1.pptxcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...scipt v1.pptxcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
scipt v1.pptxcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
HenryBriggs2
 
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills KuwaitKuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
jaanualu31
 
notes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptnotes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.ppt
MsecMca
 
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments""Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
mphochane1998
 
Standard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayStandard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power Play
Epec Engineered Technologies
 
DeepFakes presentation : brief idea of DeepFakes
DeepFakes presentation : brief idea of DeepFakesDeepFakes presentation : brief idea of DeepFakes
DeepFakes presentation : brief idea of DeepFakes
MayuraD1
 

Recently uploaded (20)

scipt v1.pptxcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
scipt v1.pptxcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...scipt v1.pptxcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
scipt v1.pptxcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
 
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills KuwaitKuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
 
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptxHOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
 
Engineering Drawing focus on projection of planes
Engineering Drawing focus on projection of planesEngineering Drawing focus on projection of planes
Engineering Drawing focus on projection of planes
 
notes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptnotes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.ppt
 
Online food ordering system project report.pdf
Online food ordering system project report.pdfOnline food ordering system project report.pdf
Online food ordering system project report.pdf
 
Computer Networks Basics of Network Devices
Computer Networks  Basics of Network DevicesComputer Networks  Basics of Network Devices
Computer Networks Basics of Network Devices
 
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptxA CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
A CASE STUDY ON CERAMIC INDUSTRY OF BANGLADESH.pptx
 
Block diagram reduction techniques in control systems.ppt
Block diagram reduction techniques in control systems.pptBlock diagram reduction techniques in control systems.ppt
Block diagram reduction techniques in control systems.ppt
 
Air Compressor reciprocating single stage
Air Compressor reciprocating single stageAir Compressor reciprocating single stage
Air Compressor reciprocating single stage
 
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments""Lesotho Leaps Forward: A Chronicle of Transformative Developments"
"Lesotho Leaps Forward: A Chronicle of Transformative Developments"
 
Bridge Jacking Design Sample Calculation.pptx
Bridge Jacking Design Sample Calculation.pptxBridge Jacking Design Sample Calculation.pptx
Bridge Jacking Design Sample Calculation.pptx
 
Hazard Identification (HAZID) vs. Hazard and Operability (HAZOP): A Comparati...
Hazard Identification (HAZID) vs. Hazard and Operability (HAZOP): A Comparati...Hazard Identification (HAZID) vs. Hazard and Operability (HAZOP): A Comparati...
Hazard Identification (HAZID) vs. Hazard and Operability (HAZOP): A Comparati...
 
Work-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptxWork-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptx
 
Standard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayStandard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power Play
 
Learn the concepts of Thermodynamics on Magic Marks
Learn the concepts of Thermodynamics on Magic MarksLearn the concepts of Thermodynamics on Magic Marks
Learn the concepts of Thermodynamics on Magic Marks
 
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptxS1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
 
Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...
Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...
Bhubaneswar🌹Call Girls Bhubaneswar ❤Komal 9777949614 💟 Full Trusted CALL GIRL...
 
A Study of Urban Area Plan for Pabna Municipality
A Study of Urban Area Plan for Pabna MunicipalityA Study of Urban Area Plan for Pabna Municipality
A Study of Urban Area Plan for Pabna Municipality
 
DeepFakes presentation : brief idea of DeepFakes
DeepFakes presentation : brief idea of DeepFakesDeepFakes presentation : brief idea of DeepFakes
DeepFakes presentation : brief idea of DeepFakes
 

Websocket

  • 2. HTTP Issue Depends on Request / Response architecture • Only client can send Requests • Server can only Respond to Requests • Can’t send another Request before Response Too much traffic overhead & header on every Request / Response HTTP is Good For Docs Not Apps
  • 3. HTTP Header (too much traffic overhead!!) HTTP Client Server
  • 4. HTTP 改善方法 避免一來一回: 使用AJAX 達到非同步通訊 (但依然需要發出請求, 因為這還是polling) 避免過多的polling traffic ,使用Long Polling (這也會消耗伺服器頻寬和資源,且還是half-duplex) 固定http Header size且改成binary協定, 且要做成 Full-duplex
  • 6. Long Polling技術 An attempt to offer realtime server interaction, using a persistent or long-lasting HTTP connection between the server and the client. The browser makes an Ajax-style request to the server, which is kept open until the server has new data to send to the browser, which is sent to the browser in a complete response. The browser initiates a new long polling request in order to obtain subsequent events. Specific technologies:
  • 7. WebSockets - Sockets on the Web ● Part of HTML5 ● W3C API and IETF Protocol (RFC 6455 ) ● Full-duplex, bidirectional communication ● Unsecured (TCP) and secured (SSL) modes ● Traverses firewalls, proxies and routers ● Text (UTF-8) and binary data ● Ping/Pong messages for keep-alive ● Share ports 80 and 443 with HTTP/HTTPS
  • 8. WebSocket A WebSocket is a standard bidirectional TCP socket between the client and the server. The socket starts out as a HTTP connection and then "Upgrades" to a TCP socket after a HTTP handshake. After the handshake, either side can send data with full duplex mode WebSocket Client WebSocket Server
  • 9. WebSocket優點 • 傳送的HTTP Request Header僅2bytes • 伺服器可主動Push資料給用戶端,而不是總是傳統HTTP Request/Response的Cycle(half-duplex),
  • 10. WebSocket Connection Process The client requesting a webSocket connection, sends an HTTP request to the server on port 80. That HTTP request is a perfectly legal HTTP request, but it has a header included on it Upgrade: websocket. If the server supports the webSocket protocol, then it responds with a legal HTTP response with a 101 status code that includes a header Connection: Upgrade. At that point, both sides then switch protocols to the webSocket protocol and all future communication on that socket is done using the data format for the webSocket frame. Any other incoming HTTP requests that do not contain the upgrade request header are treated as normal HTTP requests
  • 13.
  • 14.
  • 15. Packet Opcodes (Types) 0 - continuation frame 1 - text frame (UTF-8) 2 - binary frame 3-7 - reserved (data) 8 - connection close 9 - ping 10 - pong 11-15 - reserved (control)
  • 16. WebSocket frame 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 F I N R S V 1 R S V 2 R S V 3 opcode(4) M A S K payload len(7) extended payload len(16/64) extended payload len continued(16/64) masking key(0/32) masking key continued payload ...
  • 18. socket.io socket.io : Cross browser way to do JavaScript-based real time communication is socket.io uses WebSockets if the client supports it, and falls back on other things if it’s not, and even has AJAX polling and multi-part streaming
  • 19. Sending and receiving events Socket.IO allows you to emit and receive custom events. Besides connect, message and disconnect, you can emit custom events Socket.IO allows you to emit and receive custom events. Besides connect, message and disconnect, you can emit custom events:
  • 20. Node.js Socket.IO (Web Socket Server) npm install socket.io var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); app.get('/', function(req, res){ res.sendFile(__dirname + '/index.html'); }); io.on('connection', function(socket){ socket.on('chat message', function(msg){ io.emit('chat message', msg); }); }); http.listen(3000, function(){ console.log('listening on *:3000'); }); io代表所有sockets socket 代表單一連入的socket
  • 21. Node.js Socket.IO (Web Socket Client) <body> <ul id="messages"></ul> <form action=""> <input id="m" autocomplete="off" /><button>Send</button> </form> <script src="https://cdn.socket.io/socket.io-1.2.0.js"></script> <script src="http://code.jquery.com/jquery-1.11.1.js"></script> <script> var socket = io(); $('form').submit(function(){ socket.emit('chat message', $('#m').val()); $('#m').val(''); return false; }); socket.on('chat message', function(msg){ $('#messages').append($('<li>').text(msg)); }); </script> </body>
  • 23. 探討: 使用AJAX由於Client不斷發出HTTP Request給Server確認是 否有資料回傳,而HTTP Request Header占了大量的Bytes, 傳送時不僅占了大量網路頻寬,對Server資源的消耗量也 會變大。
  • 24. 實驗: Polling SetInterval() 與SetTimeout() 差異 輪詢(polling)是讓瀏覽器每隔一段時間就自動送出一個 HTTP 請求給伺服器
  • 26. 使用setTimeout() 可以避免錯亂! Using setTimeout() doesn’t guarantee execution on a fixed interval per se. But, it does guarantee that the previous interval has completed before the next interval is called a=1 a=2a=0 a=1 a=2 Time
  • 27. Read More • Socket.IO : http://socket.io • RFC 6455 - The WebSocket Protocol - IETF Tools