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