程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> html5+js+.Net的即時多人聊天

html5+js+.Net的即時多人聊天

編輯:C#入門知識

        今天看了下websocket的知識,了解到這是html5新增的特性,主要用於實時web的通信。之前客戶端獲取服務端的數據,是通過客戶端發出請求,服務端進行響應的模式,或者通過ajax每隔一段時間從後台發出請求,然後更新頁面的信息,這種輪詢的方式使得用戶感覺頁面是“實時響應”的,這樣做雖然簡單但未免有些暴力,另外每次請求都會有TCP三次握手並且附帶了http頭信息,服務器表示壓力很大,這就造成了性能上和延遲的問題。

        後來的技術方案中又出現了長輪詢、Comet、浏覽器插件(flash)和Java等來實現服務器往客戶端推送消息,但都有一些弊端。

        WebSocket的出現,意味著另一種解決方案,其提供了基於TCP的雙向的、全雙工(發送數據的同時也能夠接受數據,兩者同步進行)的socket連接。使用websocket,一旦服務端和客戶端之間完成握手,信息就可以隨意往來兩端,而不用附件那些無用的http頭信息,降低了帶寬的占用,提高了性能,降低了延時。但其缺陷是浏覽器的支持不夠,比如IE,到了IE10才支持。

        現在就通過一個簡單的例子來講講其運用過程,先上下效果圖:

           

          當然客戶端也可以往服務端發送消息,發送事件便是socket.send(data);data代表發送給服務端的數據:具體代碼如下

 (socket.readyState == ($("#txtMsg").val() == "" (!; 

         ($("#userName").val() == "" d = "#userName").val("游客" + d.getMinutes() + "_" + d.getSeconds() + "_" + (!= "" + $("#userName").val() + ":" + "<div class='divChat'>" + $("#txtMsg").val() + "</div>"= "" + $("#userName").val() + " " +"#txtMsg").val(""); 
        $("#txtMsg"

        2、服務端的響應

        這裡我們添加一般處理程序來進行響應和推送客戶端消息,其中有一點要處理的是 我們要實現即時多人聊天,就要把客戶端發過來的消息廣播到其他客戶端,這裡實現原理也很簡單,就是把所有的連接用list存起來,然後遍歷list集合,將消息發送給各個客戶端。具體實現代碼如下:

 
          List<WebSocket>  (WebSocketList == =  List<WebSocket> (contexts) =>= (<> buffer =  ArraySegment<>( [= 
                     clientMessage = Encoding.UTF8.GetString(buffer.Array,  (socket.State ==
                        clientMessage = DateTime.Now.ToString() +             +=  ArraySegment<>
                         (!
                         (WebSocket item  item.SendAsync(buffer, WebSocketMessageType.Text,  (socket.State ==

         參考資料:使用 HTML5 WebSocket 構建實時 Web 應用

         源碼下載

         ps:離職了,找工作中……廣州/深圳  圍觀簡歷

         喜歡就動動手指支持下!您的支持是我最大動力!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved