websocket協議是基於tcp的一種新的協議。websocket最初在html5規範中被引用為tcp連線,作為基於tcp的套接字api的佔位符。它實現了瀏覽器與伺服器全雙工(full-duplex)通訊。
http協議設計之初,由於考慮到服務端如果能主動地讓瀏覽器端推送廣告的情況,所以我們現在所使用的http協議並不能由伺服器端主動地向瀏覽器端傳送資料。
隨著移動網際網路的誕生和html5的興起,web上能做的事情也是越來越多,從一開始的使用者提交資料到伺服器,伺服器返回結果。到現在的使用者產生的資料提供給其它的使用者。就這樣,使用者對網際網路產品的要求也是越來越高,無論是從技術上、產品設計上、穩定性上、還是ui設計上都是越來越高。絕大多數的網際網路產品都是秉承著"使用者至上"的理念,當然也有些產品不是這樣想的(比如12306)。隨著網際網路產品需求指數**性的增長,當然迭代變更的需求也是很多的,有很多時候只用到基本的技術是很難實現並滿足這些需求的。
就比如說,我們要設計乙個web聊天室,把a的訊息傳送給b。由於http協議本身是不支援全雙工的,也就是說瀏覽器端和伺服器端是無法直接雙向通訊的。所以我們不能直接實現這個功能,但是可以間接實現,實現的方案如下:
其實websocket協議定義了全雙工的通訊協議,目前主要應用於即時通訊的應用場景。如果能得到充分的開發,其實也可以做很多事情。比如我們經常使用的使用者識別,使用cookie和session做身份識別,因為cookie加密儲存在本地,所以伺服器始終能識別使用者身份,用以彌補http協議無狀態的缺陷。如果採用websocket的形式互動的話,建立連線以後會始終保持連線,就不需要使用cookie和session了。但是連線數增大到一定量級時,也會給伺服器帶來效能之憂。其實還有很多應用場景是有待開發的。
全雙工半雙工
單工 單工就是指a只能發訊號,而b只能接收訊號,通訊是單向的,就象燈塔之於航船 燈塔發出光訊號而航船只能接收訊號以確保自己行駛在正確的航線上。半雙工 指乙個時間段內只有乙個動作發生,舉個簡單例子,一天窄窄的馬路,同時只能有一輛車通過,當目前有兩量車對開,這種情況下就只能一輛先過,等到頭兒後另一輛再開...
全雙工管道
fork 函式 返回0時是子程序,否則,是父程序。pipe函式 int pipe int filedes 2 返回值 成功,返回0,否則返回 1。引數陣列包含pipe使用的兩個檔案的描述符。fd 0 讀管道,fd 1 寫管道。必須在fork 中呼叫pipe 否則子程序不會繼承檔案描述符。兩個程序不共...
單工,半雙工,全雙工
1 單工 單工就是指a只能發訊號,而b只能接收訊號,通訊是單向的,就象燈塔之於航船 燈塔發出光訊號而航船只能接收訊號以確保自己行駛在正確的航線上。2 半雙工 half duplex 半雙工就是指a能發訊號給b,b也能發訊號給a,但這兩個過程不能同時進行。最典型的例子就象我們在影視作品中看到的對講機一...