C#工作總結(一):Fleck的WebSocket使用


https://blog.csdn.net/ZslLoveMiwa/article/details/80247739

一.引子(Foreword)
      最近公司里面要做窗體和網頁交互的功能。網上找了一下資料,這里做一個簡單的擴充和整理,部分內容可能是摘自其他博客,這里會注明出處和原文地址供大家和自己日后查閱。

二.基礎知識(Foundation)
(1). WebSocket介紹

WebSocket協議是基於TCP的一種新的網絡協議。它實現了瀏覽器與服務器全雙工(full-duplex)通信——允許服務器主動發送信息給客戶端。(來自白度百科)

(2).瀏覽器對WebSocket的支持

瀏覽器

支持情況

Chrome谷歌瀏覽器

Chrome version 4+支持

Firefox火狐瀏覽器

Firefox version 5+支持

IE微軟瀏覽器

IE version 10+支持(我們一般win7自帶的是IE11)

Safari蘋果瀏覽器

IOS 5+支持

Android Brower安卓瀏覽器

Android 4.5+支持

(3). WebSocket服務器支持

廠商

應用服務器

備注

IBM

WebSphere

WebSphere 8.0以上版本支持,7.X之前版本結合MQTT支持類似的HTTP長連接

甲骨文

WebLogic

WebLogic 12c 支持,11g以及10g版本通過HTTP Publish支持類似的HTTP長連接

微軟

IIS

IIS 7.0+支持

Apache

Tomcat

Tomcat 7.0.5+支持

Jetty

Jetty 7.0+支持

(4). Web前端知識概要

<1>. 對象創建(調用WebSocket的構造函數)

1)函數原型:

Constructor(DOMString url,[DOMString protocols]);
  2)說明:url為WebSocket服務器的地址,protocols為發起握手的協議名稱,為可選擇項。

<2>. 接口及函數方法(WebSocket的接口的定義)

1)函數原型:

Interface WebSocket:EventTarget{
readonly attribute DOMString url;
//readyState狀態值
Const unsigned short CONNECTING=0;
Const unsigned short OPEN=1;
Const unsigned short CLOSING=2;
Const unsigned short CLOSED=3;
readonly attribute unsigned short readyState;
readonly attribute unsigned long bufferedAmount;
//監聽網絡狀態的事件監聽器屬性
[TreatNonCallableAsNull] attribute Function? onopen;
[TreatNonCallableAsNull] attribute Function? onerror;
[TreatNonCallableAsNull] attribute Function? onclose;
readonly attribute DOMString extensions;
readonly attribute DOMString protocol;
//關閉網絡連接的方法
void close([Clamp] optional unsigned short code,optional DOMString reason);
//接受服務器消息的事件監聽器函數
[TreatNonCallableAsNull] attribute Function? onmessage;
attribute DOMString binaryType;
void send(DOMString data);
void send(ArrayBuffer data);
void send(Blob data);
};
  2)說明:

【1】. 兩個方法:

● send():向遠程服務器發送數據
            ● cosle():關閉該WebSocket

【2】. 四個重要的事件監聽器屬性:

● onopen:當WebSocket建立網絡連接的時候觸發該事件
            ● onerror:當網絡連接出現問題的時候觸發該事件
            ● onclose:當WebSocket被關閉的時候觸發該事件
            ● onmessage:當WebSocket接受到遠程服務器的數據的時候觸發該事件

注意:1. 上面的四個函數名均為小寫,大小寫時敏感的;
                              2. onmessage 綁定一個型為 function(event){…} 的函數這樣就可以通過event.data來獲得返回的數據;

【3】. readyState屬性,用於返回WebSocket所處的狀態:

● CONNECTING(數值0):WebSocket正在嘗試與服務器建立連接
            ● OPEN(數值1):WebSocket與服務器已經建立連接
            ● CLOSING(數值2):WebSocket正在關閉與服務器的連接
            ● CLOSED(數值3):WebSocket已經關閉了與服務器的連接

<3>. 使用WebSocket(4步)

1) 將相關的定義函數綁定到上面4個監聽事件中;

2) 調用WebSocket的構造函數,給定一個url來初始化一個WebSocket對象;

3) 通過send()方法來發送數據;

4) 在有必要的時候可以用close()來關閉監聽;

(4).客戶端知識概要

<1>. 梗概

我們可以通過基礎的Socket通信來實現和網頁的相互通信。但由於只有在.net Framework在4.5以及4.5以上的版本對WebSocket通信的數據解析才有相關的類來支持。所以解析數據寫起來十分的繁瑣,所以我們使用第三方的庫來完成低版本.net框架中的通信。如果有時間我也會寫一篇有關socket來進行通信及解析數據的文章。

接下來我看看用的軟件和相關的技術知識。

<2>. .Net不同WebSocket庫的比較

我這里找了一下網上的資料,如下鏈接,如果僅僅是要從網頁發送消息到服務器,那么我這邊使用Flerk。

● 英文版:WebSocket libraries comparison

● 翻譯版:.NET的WebSocket開發包比較【已翻譯100%】

<3>. Fleck的源碼下載以及說明文檔

源碼可以從網上下載,這里我給出鏈接:源碼下載

點擊頁面中的Clone or download -> Download ZIP,如下

圖一
        說明文檔就在下載的下面,是英文版的的,當然也可以看我博客中的譯文:博主翻譯版說明文檔 (覺得不錯的話轉載一下喲:-》)

一.引子(Foreword)

對於怎么使用直接看說明文檔,非常簡單,這里博主就不多說了。(博主都寫到晚上1點了T T)

三.代碼(Code)
(1). Web網頁端代碼

WebSocket測試


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM