一起来用Websocket(一)开篇 Websocket!Socket在HTML5复活
一起來用Websocket(一)開篇 Websocket!Socket在HTML5復(fù)活
?? 前言?
?? ? ? HTML5中有一個比較好用的特性,就是Websocket。現(xiàn)在已集成在chrome的較新版本中。由于前段時間在項目中有用到Websocket,感到Websocket真是HTML5中比較強大的功能?,F(xiàn)在抽點時間,總節(jié)一下在.net中使用Websocket 要注意的地方。同時,由于園子里關(guān)于Websocket的文章不多,希望能起到拋磚引玉的作用,希望能和大家一起討論更好的實現(xiàn)方式,形成更好的應(yīng)用。
?? ? ?如果可以的話,希望能形成我們.net社區(qū)自己的Websocket 框架(類似jWebsocket)。最近,業(yè)余時間我也時行了jWebsocket轉(zhuǎn).net版本的開發(fā)和測試工作,希望能借這個專題,把這個框架和大家一起完善起來,也希望有興趣的朋友加入一同開發(fā),相信我們能得很多。
下面言規(guī)正轉(zhuǎn),開始談Websocket吧。
?? 示例?
?? ? 下面有一個類似在線留言的例子:http://HTML5demos.com/web-socket。
大家一眼能看出來吧,這個沒啥特別的呀,不是和AJAX差不多吧。我用JQuery或者Xmlhttprequest或其它js框架都可以很快寫出來呀。其實,Websocket也可以被拿來當用AJAX框架來用,不過,這樣太大材小用了。這個示例中有幾個細節(jié):
第一、? 初始,連接未建立。
上圖所示”Not connected”.表示,連接還未建立。
第二、? 連接建立。
等一段時間后,原來灰色部分會變成綠色的“Socket Open”,表示連接已經(jīng)建立了。
大家也可能注意到,我在文本框中輸入了內(nèi)容后,按回車后,在最下面的部份就出來了我發(fā)的內(nèi)容。
第三、? Socket open 常連接。
我們發(fā)現(xiàn),我們一段時間不退出,狀態(tài)還是綠色的“Socket Open”。說明,連接還是一直存在的。其次,這里使用的是Socket,也就是說,剛才的留言板是在線的,實時的留言板,相當于一個聊天室,大家都可以看到你在線的狀態(tài)。是不是很令人激動。沒錯,我們的socket又復(fù)活了,在后臺,使用的就是socket的程序,其語言可以是Java、C#、PHP等其它可以監(jiān)聽或編寫socket應(yīng)用的語言。
好,上面的例子過后,我們來正式對比一下Websocket和HTTP的區(qū)別吧:
規(guī)定平臺Websocket服務(wù)器和谷歌瀏覽器,或Websocket服務(wù)器與ws客戶端程序之間數(shù)據(jù)傳送的格式協(xié)議,軟件設(shè)計應(yīng)按照此協(xié)議進行。
?? ?HTTP的三個問題:
?? ?(1)為一個WEB客戶端潛在的建產(chǎn)多個TCP連接。
?? ?(2)有一個大的HTTP頭,以滿足HTTP協(xié)議。
?? ?(3)客戶端的腳本必須為輸入連接和輸出連接建立一個映射,以確定回復(fù)。
?? ?(4)基于請求-響應(yīng)模式,HTTP服務(wù)端不能主動推送(push)數(shù)據(jù)到客戶端。
?? Websocket的三個好處:
(1)?????? 一個WEB客戶端只有一個TCP連接。
(2)?????? Websocket服務(wù)端可以推送數(shù)據(jù)到web客戶端.
(3)?????? 輕量級的頭,減少數(shù)據(jù)傳送量
(4)?????? 服務(wù)端可以主動推送數(shù)據(jù)到客戶端
(5)?????? 已成功應(yīng)用于游戲、股票交易等用多用戶實時系統(tǒng)中。
(6)?????? 支持多客戶端,Web客戶
(7)?????? 客戶端開發(fā)接口簡單
?
?? Websocket客戶端開發(fā)接口
?? ? ?如下圖所示:
提供下面三個接口?
?? ? ?onopen: 當接口打開時
onmessage: 當收到信息時
onclose: 當接口關(guān)閉時
上面的幾個方法已在chrome瀏覽器中得到支持,開發(fā)接口也相對簡單。
?
?? 本篇總結(jié):
1.????Websocket就是借著?HTML5在瀏覽器中加了一個socket通信程序的客戶端。你在安裝瀏覽器的時候,默認裝了一個客戶端,可以向服務(wù)端請求,并建產(chǎn)鏈接。然后再像原先的socket應(yīng)用程序一樣來回互相發(fā)送消息。
2.????Websocket不是一個新技術(shù),只是HTML5中用javascript提供了一些接口,讓你調(diào)用。服務(wù)端還是任何一門支持Socket通信的語言就行。
3.????Websocket的應(yīng)用。可以應(yīng)用在很的領(lǐng)域,游戲,股票。簡單說主要是一些多用戶的實時應(yīng)用。也可實現(xiàn)類似和webqq一樣的網(wǎng)頁聊工具。
4.????Websocket把http協(xié)議輕量化了,在web交互中,我們再也不用讓http包了一層又一層,而了去滿足我們不需要的功能了。我們只要簡單傳我們想要的數(shù)據(jù),協(xié)議我們可以在Websocket這種輕量級協(xié)議下,制定我們自己的子協(xié)議,可以減少不少的交互和網(wǎng)絡(luò)流量哦。
?? ? ??后面幾篇會慢慢介紹,也歡迎大家一起討論 ^-^。
?
?? 引用:
?? ? ?[1] jWebsocket(java服務(wù)端和客戶端websocket框架)
?? ? ?http://jwebsocket.org/
?? ? ?[2] Websocket協(xié)議(本協(xié)議應(yīng)用較為多,也比較全了)http://tools.ietf.org/HTML/draft-hixie-theWebsocketprotocol-76
?? ? ?[3] HTML5 Websockets 基礎(chǔ)使用教程
?? ? ??http://kb.cnblogs.com/page/72745/
?? 大綱預(yù)告?
?? ? ? ??一起來用Websocket(一):[開篇]Websocket!Socket在HTML5復(fù)活
?? ? ? ??一起來用Websocket(二):Websocket協(xié)議詳細分析
?? ? ? ??一起來用Websocket(三):開源Websocket框架--jWebsocket簡介
主要功能,在線示例
?? ? ? ??一起來用Websocket(四):開源Websocket框架jWebsocket的架構(gòu)設(shè)計
?? ? ? ??一起來用Websocket(五):jWebsocket中的權(quán)限和配置
?? ? ? ??一起來用Websocket(六):jWebsocket框架中的數(shù)據(jù)包處理
?? ? ? ??一起來用Websocket(七):jWebsocket 框架中的過濾器
?? ? ? ??一起來用Websocket(八):jWebsocket框架中的常用工具類說明
?? ? ? ?一起來用Websocket(九):jWebsocket的.NET版本NWebsocket
?? ?? ?一起來用Websocket(十):NWebsocket中的二次開發(fā)
服務(wù)端插件 客戶端插件
???? ? ?一起來用Websocket(十一):NWebsocket框架開發(fā)實例
?? ?? ?一起來用Websocket(十二):在NWebsocket中應(yīng)用高性能通信引擎?
轉(zhuǎn)載于:https://www.cnblogs.com/dtdnh520/archive/2010/11/09/1873095.html
總結(jié)
以上是生活随笔為你收集整理的一起来用Websocket(一)开篇 Websocket!Socket在HTML5复活的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jquery图片幻灯片(小图列表,大图展
- 下一篇: 如何计算MP3总时长的问题(二)