1. 程式人生 > >Socket.IO 中文筆記

Socket.IO 中文筆記

Socket.IO 由兩部分組成

  1. 與Node.JS HTTP Server整合(或安裝)的伺服器
  2. 在瀏覽器端載入的客戶端庫

主要特性

可靠性

自動重新連線支援

除非得到指示,客戶端會一直嘗試重新連線到伺服器,直到連線成功

斷線檢測

二進位制支援

可以發出任何可序列化的資料結構

多路複用支援

為了在應用程式中建立關注點分離(例如,每個模組或基於許可權),Socket.IO允許您建立多個名稱空間,這些名稱空間將充當單獨的通訊通道,但將共享相同的底層連線。

房間支援

在每個名稱空間中,您可以定義套接字可以加入和離開的任意通道,稱為Rooms。 然後,您可以廣播到任何給定的房間,到達已加入它的每個套接字。

這是一個非常有用的功能,可以將通知傳送給一組使用者,或者傳送給連線在多個裝置上的給定使用者。

這些功能帶有一個簡單方便的API,如下所示:

io.on('connection', function(socket){
  socket.emit('request', /* */); // emit an event to the socket
  io.emit('broadcast', /* */); // emit an event to all connected sockets
  socket.on('reply', function(){ /* */ }); // listen to the event
});

Socket.IO不是WebSocket實現。 儘管Socket.IO確實在可能的情況下使用WebSocket作為傳輸,但它會為每個資料包新增一些元資料:資料包型別,名稱空間和需要訊息確認時的確認ID。 這就是為什麼WebSocket客戶端無法成功連線到Socket.IO伺服器,並且Socket.IO客戶端也無法連線到WebSocket伺服器。

Socket.IO允許您發出和接收自定義事件。 除了連線,訊息和斷開連線,您還可以發出自定義事件