你們好,我是Java最全面試題庫
的提褲姐,今天這篇是分佈式技術的第五篇,主要介紹WebSocket;在後續,會沿着第一篇開篇的知識線路一直總結下去,作到日更!若是我能作到百日百更,但願你也能夠跟着百日百刷,一百天養成一個好習慣。java
websocket是HTML5的一種新協議,容許服務器向客戶端傳遞信息,實現瀏覽器和客戶端雙工通訊。web
全雙工是通信傳輸的一個術語。通訊容許數據在兩個方向上同時傳輸,他在能力上至關於兩個單工通訊方式的結合。全雙工指能夠同時進行信號的雙向傳輸。面試
全雙工
:例如咱們使用的手機就是全雙工,在同一時刻兩個用戶能夠同時給對方傳送數據半雙工
:例如咱們使用的對講機,當A方按住通話按鈕才能夠向B方傳送數據,B方也是,在同一時刻只有一個用戶可以傳送數據(A/用戶均可以傳遞信息,可是不可以同時傳遞)單工
:例如咱們看電視時,咱們只能接收對方發送的信息,不可以給對方傳遞信息;http協議是短連接,由於請求以後,都會關閉鏈接,下次請求須要從新打開連接。
websocket協議是一種長鏈接,只須要經過一次請求來初始化鏈接,而後全部請求和響應都是經過TCP連接進行通訊。瀏覽器
socket是應用層與TCP/IP協議通訊的中間軟件抽象層,它是一組接口。而websocket協議是一個完整的應用層協議,擁有一套完整的API。服務器
@ServerEndpoint :相似與servlet中的 RequestMapping
@OnOpen:相似與servlet中的 init()
初始化
@OnClose:相似與servlet中的destroy()
銷燬
@OnMessage:相似於servlet中的service請求
(意思就是發送數據的方式 @doPost()
/ @doGet()
組合)websocket
一、AJAX輪詢
二、Long Polling長輪詢
三、WebSocketapp
// 建立一個webSocket對象 const ws = new WebSocket("ws://127.0.0.1:3000/websocket/test") ws.onopen = e => { // 鏈接後監聽 console.log("建立了websocket") }
一、社交訂閱
二、多玩家遊戲
三、協同編輯文檔
四、數據流狀態
五、多人聊天socket