C#-Web socket client範例

web socket是一種網路通訊協定。
參考wiki有以下優點。
  • 較少的控制開銷。在連接建立後,伺服器和用戶端之間交換資料時,用於協定控制的封包頭部相對較小。在不包含擴充的情況下,對於伺服器到用戶端的內容,此頭部大小只有2至10位元組(和封包長度有關);對於用戶端到伺服器的內容,此頭部還需要加上額外的4位元組的遮罩。相對於HTTP請求每次都要攜帶完整的頭部,此項開銷顯著減少了。
  • 更強的即時性。由於協定是全雙工的,所以伺服器可以隨時主動給用戶端下發資料。相對於HTTP請求需要等待用戶端發起請求伺服器端才能回應,延遲明顯更少;即使是和Comet等類似的長輪詢比較,其也能在短時間內更多次地傳遞資料。
  • 保持連接狀態。與HTTP不同的是,Websocket需要先建立連接,這就使得其成為一種有狀態的協定,之後通訊時可以省略部分狀態資訊。而HTTP請求可能需要在每個請求都攜帶狀態資訊(如身分認證等)。
  • 更好的二進位支援。Websocket定義了二進位影格,相對HTTP,可以更輕鬆地處理二進位內容。
  • 可以支援擴充。Websocket定義了擴充,用戶可以擴充協定、實現部分自訂的子協定。如部分瀏覽器支援壓縮等。
  • 更好的壓縮效果。相對於HTTP壓縮,Websocket在適當的擴充支援下,可以沿用之前內容的上下文,在傳遞類似的資料時,可以顯著地提高壓縮率。

簡單講更輕量,也同步,下面就用C#的方法寫一個client端的web socket。

先去Nuget下載WebSocketSharp套件,透過下面語法便可與server端連線,傳送的值我把它包成json。


using WebSocketSharp;

            //透過websocketclient傳送資料
            var ws = new WebSocket("ws://140.110.148.87:8080/websocket/test");
            ws.Connect();
            datameta.order = Convert.ToInt64(filename);
            datameta.title = fname;
            json1 = JsonConvert.SerializeObject(datameta);
            Task.Run(() => ws.Send(json1));




留言

這個網誌中的熱門文章

Python-相關係數矩陣實作(python-correlation matrix )

ASP.NET-後端將值傳給javascript

ASP.NET-FileUpload上傳後自動觸發button click(FileUpload upload auto trigger button click)