1. 程式人生 > >Socket.IO介紹:支持WebSocket、用於WEB端的即時通訊的框架

Socket.IO介紹:支持WebSocket、用於WEB端的即時通訊的框架

網絡 進行 最新版本 ajax 並且 移動 接口 事件 ODB

一、基本介紹

  WebSocket是HTML5的一種新通信協議,它實現了瀏覽器與服務器之間的雙向通訊。而Socket.IO是一個完全由JavaScript實現、基於Node.js、支持WebSocket的協議用於實時通信、跨平臺的開源框架,它包括了客戶端的JavaScript和服務器端的Node.js。

  Socket.IO除了支持WebSocket通訊協議外,還支持許多種輪詢(Polling)機制以及其它實時通信方式,並封裝成了通用的接口,並且在服務端實現了這些實時機制的相應代碼。Socket.IO實現的Polling通信機制包括Adobe Flash Socket、AJAX長輪詢、AJAX multipart streaming、持久Iframe、JSONP輪詢等。Socket.IO能夠根據瀏覽器對通訊機制的支持情況自動地選擇最佳的方式來實現網絡實時應用。當前,Socket.IO最新版本是於2015年1月19日發布的1.3.0版本,該版本增強了穩定性和提高了性能,並修復了大量Bug。

  Socket.IO設計的目標是構建能夠在不同瀏覽器和移動設備上良好運行的實時應用,如實時分析系統、二進制流數據處理應用、在線聊天室、在線客服系統、評論系統、WebIM等。目前,Socket.IO已經支持主流PC瀏覽器(如IE、Safari、Chrome、Firefox、Opera等)和移動平臺上的瀏覽器(iOS平臺下的Safari、Android平臺下的基於Webkit的瀏覽器等)。

  Socket.IO已經具有眾多強大功能的模塊和擴展API,如(session.socket.io)(http session中間件,進行session相關操作)、socket.io-cookie(cookie解析中間件)、session-web-sockets(以安全的方式傳遞Session)、socket-logger(JSON格式的記錄日誌工具)、websocket.MQ(可靠的消息隊列)、socket.io-mongo(使用MongoDB的適配器)、socket.io-redis(Redis的適配器)、socket.io-parser(服務端和客戶端通訊的默認協議實現模塊)等。

  Socket.IO實現了實時、雙向、基於事件的通訊機制,它解決了實時的通信問題,並統一了服務端與客戶端的編程方式。啟動了Socket以後,就像建立了一條客戶端與服務端的管道,兩邊可以互通有無。它還能夠和Express.js提供的傳統請求方式很好的結合,即可以在同一個域名,同一個端口提供兩種連接方式。

二、簡單示例

   搭建Socket.IO環境需要先創建一個作為工作空間的目錄,然後安裝Node.js,並在工作空間下安裝Socket.IO(命令:npm install socket.io),這樣環境已經搭建完成。還可以安裝基於Node.js框架(如Express.js等)以協助應用的服務器端開發。

  服務器段示例代碼如下:

var io = require(socket.io).listen(8080);
io.sockets.on(connection, function (socket) {
    socket.emit(news, { hello: world });
    socket.on(my other event, function (data) {
        console.log(data);
    });
});

  客戶端示例代碼如下:

<script src="https://cdn.bootcss.com/socket.io/2.1.1/socket.io.dev.js"></script>
<script type="text/javascript">
var socket = io.connect(http://localhost:8080);
socket.on(news, function (data) {
    console.log(data); 
    socket.emit(my other event, { my: data });
});
</script>

  執行之後:先客戶端接受服務器推送信息news,打印{hello:world}

技術分享圖片

  後客戶端向服務端發送信息,觸發服務端事件,打印{ my: ‘data‘ }

技術分享圖片

Socket.IO介紹:支持WebSocket、用於WEB端的即時通訊的框架