青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

WebSocket協議

轉載自:http://www.cnblogs.com/ghj1976/archive/2013/04/19/3030968.html

WebSocket的JavaScript例子

一個WebSocket的簡單Echo例子:例子代碼來自:http://www.websocket.org/echo.html

使用一個文本編輯器,把下面代碼復制保存在一個 websocket.html 文件中,然后只要在瀏覽器中打開它,頁面就會使用 websocket 自動連接,發送一個消息,顯示接受到的服務器響應,然后關閉連接。

<!DOCTYPE html>  

<meta charset="utf-8" />  

<title>WebSocket Test</title>  

<script language="javascript"type="text/javascript">  

    var wsUri ="ws://echo.websocket.org/"

    var output;  

    

    function init() { 

        output = document.getElementById("output"); 

        testWebSocket(); 

    }  

 

    function testWebSocket() { 

        websocket = new WebSocket(wsUri); 

        websocket.onopen = function(evt) { 

            onOpen(evt) 

        }; 

        websocket.onclose = function(evt) { 

            onClose(evt) 

        }; 

        websocket.onmessage = function(evt) { 

            onMessage(evt) 

        }; 

        websocket.onerror = function(evt) { 

            onError(evt) 

        }; 

    }  

 

    function onOpen(evt) { 

        writeToScreen("CONNECTED"); 

        doSend("WebSocket rocks"); 

    }  

 

    function onClose(evt) { 

        writeToScreen("DISCONNECTED"); 

    }  

 

    function onMessage(evt) { 

        writeToScreen('<span style="color: blue;">RESPONSE: '+ evt.data+'</span>'); 

        websocket.close(); 

    }  

 

    function onError(evt) { 

        writeToScreen('<span style="color: red;">ERROR:</span> '+ evt.data); 

    }  

 

    function doSend(message) { 

        writeToScreen("SENT: " + message);  

        websocket.send(message); 

    }  

 

    function writeToScreen(message) { 

        var pre = document.createElement("p"); 

        pre.style.wordWrap = "break-word"

        pre.innerHTML = message; 

        output.appendChild(pre); 

    }  

 

    window.addEventListener("load", init, false);  

</script>  

<h2>WebSocket Test</h2>  

<div id="output"></div>  

</html>

主要代碼解讀:

申請一個WebSocket對象,參數是需要連接的服務器端的地址,同http協議使用http://開頭一樣,WebSocket協議的URL使用ws://開頭,另外安全的WebSocket協議使用wss://開頭。。

       var wsUri ="ws://echo.websocket.org/"
       websocket 
= new WebSocket(wsUri); 

WebSocket對象一共支持四個消息 onopen, onmessage, onclose和onerror,

我們可以看出所有的操作都是采用消息的方式觸發的,這樣就不會阻塞UI,使得UI有更快的響應時間,得到更好的用戶體驗。

當Browser和WebSocketServer連接成功后,會觸發onopen消息;

        websocket.onopen = function(evt) { 

        }; 

如果連接失敗,發送、接收數據失敗或者處理數據出現錯誤,browser會觸發onerror消息;

        websocket.onerror = function(evt) { 

        }; 

當Browser接收到WebSocketServer發送過來的數據時,就會觸發onmessage消息,參數evt中包含server傳輸過來的數據;

        websocket.onmessage = function(evt) { 

        }; 

當Browser接收到WebSocketServer端發送的關閉連接請求時,就會觸發onclose消息。

        websocket.onclose = function(evt) { 

        }; 

WebSocket與TCP、HTTP的關系

WebSocket與http協議一樣都是基于TCP的,所以他們都是可靠的協議,Web開發者調用的WebSocket的send函數在browser的實現中最終都是通過TCP的系統接口進行傳輸的。

WebSocket和Http協議一樣都屬于應用層的協議,那么他們之間有沒有什么關系呢?答案是肯定的,WebSocket在建立握手連接時,數據是通過http協議傳輸的,但是在建立連接之后,真正的數據傳輸階段是不需要http協議參與的。

NewImage

 

 

 

 

 

 

 

 

 

 

WebSocket通訊詳細解讀

 從下圖可以明顯的看到,分三個階段:

  • 打開握手
  • 數據傳遞
  • 關閉握手

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

下圖來自:https://code.google.com/p/websocket-sample/wiki/Tips

顯示了WebSocket主要的三步 瀏覽器和 服務器端分別做了那些事情。

NewImage

 

WebSocket的優點
a)、服務器與客戶端之間交換的標頭信息很小,大概只有2字節;
b)、客戶端與服務器都可以主動傳送數據給對方;
c)、不用頻率創建TCP請求及銷毀請求,減少網絡帶寬資源的占用,同時也節省服務器資源;

建立連接的握手 

當Web應用程序調用new WebSocket(url)接口時,Browser就開始了與地址為url的WebServer建立握手連接的過程。

1. Browser與WebSocket服務器通過TCP三次握手建立連接,如果這個建立連接失敗,那么后面的過程就不會執行,Web應用程序將收到錯誤消息通知。

2. 在TCP建立連接成功后,Browser/UA通過http協議傳送WebSocket支持的版本號,協議的字版本號,原始地址,主機地址等等一些列字段給服務器端。

3.     WebSocket服務器收到Browser/UA發送來的握手請求后,如果數據包數據和格式正確,客戶端和服務器端的協議版本號匹配等等,就接受本次握手連接,并給出相應的數據回復,同樣回復的數據包也是采用http協議傳輸。 

4.     Browser收到服務器回復的數據包后,如果數據包內容、格式都沒有問題的話,就表示本次連接成功,觸發onopen消息,此時Web開發者就可以在此時通過send接口想服務器發送數據。否則,握手連接失敗,Web應用程序會收到onerror消息,并且能知道連接失敗的原因。 

 

這個握手很像HTTP,但是實際上卻不是,它允許服務器以HTTP的方式解釋一部分handshake的請求,然后切換為websocket

數據傳輸

WebScoket協議中,數據以幀序列的形式傳輸。
考慮到數據安全性,客戶端向服務器傳輸的數據幀必須進行掩碼處理。服務器若接收到未經過掩碼處理的數據幀,則必須主動關閉連接。
服務器向客戶端傳輸的數據幀一定不能進行掩碼處理。客戶端若接收到經過掩碼處理的數據幀,則必須主動關閉連接。
針對上情況,發現錯誤的一方可向對方發送close幀(狀態碼是1002,表示協議錯誤),以關閉連接。

 

 

http://www.cnblogs.com/caosiyang/archive/2012/08/14/2637721.html 

關閉WebSocket(握手)

Image006 1

 

 

使用Wireshark監控到的上面WebSocket例子的數據。

GET / HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: echo.websocket.org
Origin: null
Pragma: no-cache
Cache-Control: no-cache
Sec-WebSocket-Key: Qcgtb1RJ6HceeTRLPFux/A==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: x-webkit-deflate-frame
Cookie: __utma=9925811.951031439.1365242028.1365980711.1366068689.5; __utmc=9925811; __utmz=9925811.1365242028.1.1.utmcsr=websocket.org|utmccn=(referral)|utmcmd=referral|utmcct=/

HTTP/1.1 101 Web Socket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Accept: 84Qpane33QhxOmcz8bGkFdE1AHk=
Server: Kaazing Gateway
Date: Tue, 16 Apr 2013 09:51:25 GMT
Access-Control-Allow-Origin: null
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: content-type
Access-Control-Allow-Headers: authorization
Access-Control-Allow-Headers: x-websocket-extensions
Access-Control-Allow-Headers: x-websocket-version
Access-Control-Allow-Headers: x-websocket-protocol

..a[
J6>h..8a/.{x%.0y..WebSocket rocks..i.....

 

 

參考資料:

WebSocket官網
http://www.websocket.org

About HTML5 WebSockets
http://www.websocket.org/aboutwebsocket.html

Comet 和 WebSocket
http://www.cnblogs.com/ghj1976/archive/2013/03/25/2981245.html

WebSockets Ready For Your Site
http://www.codeproject.com/Articles/400510/WebSockets-Ready-For-Your-Site

Windows 8 和 WebSocket 協議
http://msdn.microsoft.com/zh-cn/magazine/jj863133.aspx

WebSocket握手總結
http://www.hoverlees.com/blog/?p=1413

WebSocket不同版本的三種握手方式以及一個Netty實現JAVA類
http://blog.csdn.net/fenglibing/article/details/7100070

HTML5 Web Sockets與代理服務器交互
http://www.infoq.com/cn/articles/Web-Sockets-Proxy-Servers

Develop websocket binding for Apache Tuscany
https://cwiki.apache.org/TUSCANYWIKI/develop-websocket-binding-for-apache-tuscany.html

從Http的連接到WebSocket
http://blog.csdn.net/fenglibing/article/details/7108982

WebSocket(3)-- WebSocket協議簡介
http://blog.csdn.net/yl02520/article/details/7298461

websocket 連接 C Server的嘗試
http://www.kuqin.com/networkprog/20120803/323787.html

Tomcat 7中的Websocket
http://www.haogongju.net/art/1799354


https://github.com/astaxie/build-web-application-with-golang/blob/master/ebook/08.2.md

posted on 2015-10-22 17:05 楊粼波 閱讀(1572) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久婷婷综合激情| 乱码第一页成人| 国产精品久久久久99| 蜜臀99久久精品久久久久久软件| 亚洲激情另类| 欧美激情第8页| 亚洲二区精品| 国产精品一区二区男女羞羞无遮挡| 蜜臀a∨国产成人精品| 免费在线成人| 欧美日韩免费区域视频在线观看| 久久综合九色综合久99| 嫩草伊人久久精品少妇av杨幂| 久久久精品一区| 欧美日韩不卡视频| 国产精品电影观看| 国产欧美一区二区三区沐欲| 黄色成人片子| 一区二区三区免费看| 亚洲欧美国产高清| 久久婷婷国产麻豆91天堂| 免费看的黄色欧美网站| 亚洲国产精品成人久久综合一区| 亚洲毛片一区| 久久久久网站| 国产日韩1区| 亚洲美女色禁图| 久久免费精品视频| 亚洲一区二区三区精品视频| 蜜臀av一级做a爰片久久| 国产乱肥老妇国产一区二| 91久久夜色精品国产网站| 性一交一乱一区二区洋洋av| 亚洲国产成人精品视频| 欧美一区二区三区四区高清 | 伊人激情综合| 亚洲天堂成人在线观看| 国产综合色在线| 久久xxxx精品视频| 亚洲一区二区精品在线| 欧美三级在线播放| 亚洲天堂av在线免费观看| 91久久国产自产拍夜夜嗨| 久久精品夜色噜噜亚洲a∨| 国产一区二区在线观看免费播放| 亚洲欧美日韩电影| 亚洲欧美日韩精品久久久久| 国产精品久久毛片a| 欧美一区二区高清在线观看| 免费不卡亚洲欧美| 欧美母乳在线| 欧美色精品天天在线观看视频 | 欧美夜福利tv在线| 欧美日本韩国在线| 亚洲一区二区四区| 一区二区三区你懂的| 性色一区二区| 国产精品色午夜在线观看| 久久久久久亚洲精品中文字幕| 亚洲淫性视频| 亚洲影院在线| 韩国三级在线一区| 欧美韩日视频| 欧美亚男人的天堂| 欧美二区乱c少妇| 欧美日本免费| 久久久精品午夜少妇| 欧美黄色影院| 久久久久久噜噜噜久久久精品| 亚洲精品日韩在线| 国产农村妇女精品一区二区| 亚洲第一二三四五区| 国产欧美二区| 亚洲一区免费看| 午夜精品久久久久久99热软件| 欧美日韩国产精品一区| 久久人人爽国产| 国产精品视频999| 中文久久精品| 欧美一区二区三区在线看| 欧美三区免费完整视频在线观看| 欧美国产精品中文字幕| 亚洲激情网站免费观看| 欧美中文字幕不卡| 乱中年女人伦av一区二区| 在线观看视频免费一区二区三区| 午夜精品一区二区三区电影天堂| 午夜精品久久久久久99热| 国产伦精品一区二区三区四区免费| 一区二区三区欧美| 久久精品一区二区三区不卡| 国内外成人免费视频| 久久一区二区三区国产精品| 久久深夜福利| 一区二区不卡在线视频 午夜欧美不卡'| 卡一卡二国产精品| 99国产精品视频免费观看| 午夜精品www| 亚洲欧洲精品一区| 国产日韩1区| 欧美日韩中文在线观看| 久久福利影视| 一本色道久久88综合日韩精品| 久久精品麻豆| 香蕉久久久久久久av网站| 亚洲国产日韩欧美| 国产欧美一区二区精品婷婷| 欧美福利电影在线观看| 9l视频自拍蝌蚪9l视频成人| 国产日韩综合一区二区性色av| 男人天堂欧美日韩| 久久精品夜夜夜夜久久| 亚洲无限乱码一二三四麻| 亚洲福利视频网站| 欧美成人影音| 欧美成人资源| 亚洲国产99精品国自产| 蜜桃久久精品一区二区| 久久成人这里只有精品| 亚洲欧美日韩精品综合在线观看 | 欧美成人精品影院| 欧美大尺度在线| 亚洲国产经典视频| 99在线精品免费视频九九视| 亚洲免费观看在线观看| 在线亚洲+欧美+日本专区| 亚洲嫩草精品久久| 久久国内精品自在自线400部| 欧美一级电影久久| 久久一区激情| 欧美体内谢she精2性欧美| 国产精品久久九九| 国产日韩欧美精品综合| 91久久极品少妇xxxxⅹ软件| 99视频一区| 欧美呦呦网站| 亚洲精品久久久久中文字幕欢迎你| 日韩视频―中文字幕| 久久久久久久999| 国产精品国产三级欧美二区| 国产亚洲精品资源在线26u| 亚洲精品四区| 另类春色校园亚洲| 亚洲男人的天堂在线| 欧美黄色小视频| 狠狠色丁香久久综合频道| 一区二区三区 在线观看视频| 国产一区高清视频| 99这里只有精品| 欧美激情日韩| 久久久精品国产一区二区三区| 欧美三级乱人伦电影| 91久久精品国产91久久| 欧美国产一区视频在线观看| 久久国内精品视频| 136国产福利精品导航网址应用 | 欧美日韩视频不卡| 亚洲国产一区二区三区a毛片| 午夜久久tv| 新片速递亚洲合集欧美合集| 国产精品久久久久毛片软件| 正在播放日韩| 亚洲一级高清| 尤物yw午夜国产精品视频明星| 久久九九免费| 裸体丰满少妇做受久久99精品| 亚洲经典三级| 99re成人精品视频| 国产伦精品一区二区三区四区免费| 亚洲欧美另类中文字幕| 欧美一区二区免费观在线| 一色屋精品亚洲香蕉网站| 欧美激情一区二区久久久| 欧美日韩免费精品| 久久婷婷久久一区二区三区| 蜜桃精品一区二区三区| 一区二区三区成人精品| 午夜精品久久久久久久99樱桃| 极品日韩av| 亚洲午夜黄色| 亚洲一区在线播放| 久久久久久久久久久久久女国产乱| 亚洲美女毛片| 美女成人午夜| 久久久久久久久综合| 欧美视频在线播放| 亚洲第一级黄色片| 永久555www成人免费| 午夜视频在线观看一区二区三区 | 国产午夜精品全部视频在线播放 | 日韩视频一区二区三区在线播放| 亚洲天堂网在线观看| 一本色道久久综合亚洲二区三区| 久久精品视频免费观看| 欧美一级理论片| 国产美女高潮久久白浆| 亚洲午夜在线观看视频在线| 一本大道久久a久久精品综合| 欧美激情性爽国产精品17p| 欧美国产国产综合|