2017-04-07 125 views
0

我正在C中實現一個WebSocket服務器,並且想知道文本/二進制幀指示器(操作碼1和2)的用途是什麼。他們爲什麼在那裏?最後,在這兩種情況下,有效載荷都包含比特。當有一個使用websocket的協議時,我知道數據有什麼期望。是因爲當它是文本消息時,我可以確定有效載荷只包含UTF-8有效數據嗎?Websocket:什麼是文本/二進制幀指示器的目的

回答

1

我會開始回答,指出WebSockets通常是用一個Javascript客戶端(即瀏覽器)實現的。

當您使用C時,可能會以不同的方式使用不同的操作碼,但使用Javascript時,此差異控制事件中的數據類型(BlobString)。

正如您在問題中指出的那樣,字符串始終是有效的UTF-8字節流,而blob則不是。

這會影響一些數據傳輸方案(例如需要UTF-8有效流的JSON解析)。

顯然,在C,這個操作碼,可以以不同的方式使用,但它會更好地使用操作碼以同樣的方式作爲一個潛在的JavaScript客戶端。

P.S.

有一些Websocket C庫和框架(我是facil.io的作者)。

除非這是一個研究項目,否則我會考慮使用其中一個已建立的框架/庫。