發表文章

目前顯示的是 8月, 2019的文章

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;