最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

node.js中的socket.io入門實例

 更新時間:2014年04月26日 10:13:58   作者:  
這篇文章主要介紹了node.js中的socket.io入門實例,并對websocket等反向ajax技術(shù)做了介紹,需要的朋友可以參考下

關(guān)于websocket等反向ajax技術(shù)介紹

在實時web應(yīng)用中,常見的方法是反向Ajax。反向Ajax的定義:

反向Ajax(Reverse Ajax)本質(zhì)上則是這樣的一種概念:能夠從服務(wù)器端向客戶端發(fā)送數(shù)據(jù)。在一個標準的HTTP Ajax請求中,數(shù)據(jù)是發(fā)送給服務(wù)器端的,反向Ajax可以某些特定的方式來模擬發(fā)出一個Ajax請求,這些方式本文都會論及,這樣的話,服務(wù)器就可以盡可能快地向客戶端發(fā)送事件(低延遲通信)。

反向Ajax技術(shù)主要有兩點內(nèi)容:一是服務(wù)器端保持住TCP連接直到其有數(shù)據(jù)發(fā)送給客戶端(可以使用循環(huán)和睡眠實現(xiàn)),二是客戶端js編程技巧。

websocket是html5的規(guī)范,也屬于反ajax技術(shù)。

socket.io實現(xiàn)反向AJAX技術(shù)實例

socket.io官方介紹:

Socket.IO aims to make realtime apps possible in every browser and mobile device, blurring the differences between the different transport mechanisms. It's care-free realtime 100% in JavaScript. In order to provide realtime connectivity on every browser, Socket.IO selects the most capable transport at runtime, without it affecting the API. WebSocket Adobe® Flash® Socket AJAX long polling AJAX multipart streaming Forever Iframe JSONP Polling

簡單來說socket.io是一個基于nodejs的庫,其對多種反向ajax技術(shù)進行了包裝并統(tǒng)一了接口。在運行時候socket.io自動根據(jù)瀏覽器的情況選擇合適的反向ajax技術(shù)與socket.io服務(wù)器進行交互。如果說websocket等技術(shù)是規(guī)范的話,那么socket.io則屬于應(yīng)用。

下面說一下如何安裝(作者使用Linux Mint 16):

安裝node.js:

復(fù)制代碼 代碼如下:
sudo apt-get install nodejs

輸入命令nodejs即可進入shell模式。

安裝npm:

復(fù)制代碼 代碼如下:
sudo apt-get install npm

安裝socket.io:
復(fù)制代碼 代碼如下:
sudo npm install socket.io

安裝包存放在~/node_modules目錄下,客戶端socket.io.js存放在~/node_modules/socket.io/node_modules/socket.io-client/dist目錄下。

socket.io示例

以下示例來自官方網(wǎng)站并做了適當修改。

首先建立server端(服務(wù)端)代碼(文件test.js):

復(fù)制代碼 代碼如下:

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);
});
});


服務(wù)端test.js綁定了8080端口,當一個客戶端連接服務(wù)端test.js時候,服務(wù)端test.js向客戶端發(fā)出news指令并傳送數(shù)據(jù){ hello: 'world' };而服務(wù)端test.js收到my other event指令時候會調(diào)用回調(diào)函數(shù)function (data) { console.log(data);}來處理接收到的數(shù)據(jù)data。

筆者搭建了nginx服務(wù)器,其使用的80端口,web根目錄為/usr/share/nginx/html。將~/node_modules/socket.io/node_modules/socket.io-client/dist下的socket.io.min.js復(fù)制到web根目錄,并在在web根目錄下建立文件index.php(作為客戶端),內(nèi)容如下:

復(fù)制代碼 代碼如下:

<html>
<head>
</head>
<script src="socket.io.min.js"></script>
<body>
<script>
  var socket = io.connect('http://localhost:8080');
  socket.on('news', function (data) {
    console.log(data);
    console.log(data["hello"]);
    socket.emit('my other event', { my: 'data' });
  });
</script>
</body>

</html>

上面代碼中,socket綁定了8080端口,也就是綁定了server端。socket.on()指定了當收到news指令時候,應(yīng)該如何處理收到的指令對應(yīng)的數(shù)據(jù),socket.emit()向server端發(fā)送指令和數(shù)據(jù)。

運行server端:

復(fù)制代碼 代碼如下:
$ nodejs test.js

運行客戶端并進行觀察:打開瀏覽器,進入http://127.0.0.1訪問index.php,并打開firebug查看信息。

上圖來自firebug,表明了客戶端index.php連接服務(wù)端test.js后收到了來自服務(wù)端test.js的數(shù)據(jù){hello:"world"}。同時也能夠看到index.php訪問server的網(wǎng)址并非簡單的http://localhost:8080。

上圖顯示了服務(wù)端test.js的處理過程。
上圖是客戶端index.php第一次向服務(wù)端test.js發(fā)送的http頭。

上圖是客戶端index.php第2次向服務(wù)端test.js發(fā)送的http頭。使用了websocket規(guī)范。
當關(guān)掉服務(wù)端test.js時候客戶端index.php出現(xiàn)很多Aborted狀態(tài)(紅字部分)。

分析結(jié)束。

相關(guān)文章

  • Highcharts入門之基本屬性

    Highcharts入門之基本屬性

    Highcharts是一個用純JavaScript編寫的一個圖表庫,之前小編發(fā)了一篇介紹Highcharts的文章,那么本文將進一步的介紹Highcharts的基本屬性,有需要的可以參考學習。
    2016-08-08
  • JS日程管理插件FullCalendar簡單實例

    JS日程管理插件FullCalendar簡單實例

    JS日程管理插件FullCalendar是一款基于jQuery的日歷日程插件,適用于各種日程安排、工作計劃等場景,您可以很方便的查看查看待辦事項,標記重要事項以及綁定點擊和拖動事件,能快速的整合到您的項目中,本文將簡單介紹FullCalendar的使用
    2017-02-02
  • node.js中的socket.io入門實例

    node.js中的socket.io入門實例

    這篇文章主要介紹了node.js中的socket.io入門實例,并對websocket等反向ajax技術(shù)做了介紹,需要的朋友可以參考下
    2014-04-04
  • Three.js學習之幾何形狀

    Three.js學習之幾何形狀

    本文利用實例代碼詳細介紹了一些Three.js中的幾何形狀的實現(xiàn)過程,包括立方體、平面與球體,有需要的朋友們可以學習下。
    2016-08-08
  • Three.js學習之文字形狀及自定義形狀

    Three.js學習之文字形狀及自定義形狀

    今天小編帶大家學習的是Three.js的文字形狀與自定義形狀,文章內(nèi)容很詳細,對大家學習Three.js或許有幫助,下面一起來看看吧。
    2016-08-08
  • 組件庫Monmrepo架構(gòu)與開發(fā)調(diào)試環(huán)境構(gòu)建詳解

    組件庫Monmrepo架構(gòu)與開發(fā)調(diào)試環(huán)境構(gòu)建詳解

    這篇文章主要為大家介紹了組件庫Monmrepo架構(gòu)與開發(fā)調(diào)試環(huán)境構(gòu)建詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • Highcharts入門之簡介

    Highcharts入門之簡介

    Highcharts 是一個用純JavaScript編寫的一個圖表庫, 能夠很簡單便捷的在web網(wǎng)站或是web應(yīng)用程序添加有交互性的圖表,并且免費提供給個人學習、個人網(wǎng)站和非商業(yè)用途使用。下面通過本文的介紹及實例一起來學習學習吧。
    2016-08-08
  • 基于d3.js實現(xiàn)實時刷新的折線圖

    基于d3.js實現(xiàn)實時刷新的折線圖

    本文用實例演示如何用d3.js實現(xiàn)實時刷新的折線圖,非常具有實用價值,需要的朋友可以參考下。
    2016-08-08
  • js類庫styled-components快速入門教程

    js類庫styled-components快速入門教程

    這篇文章主要為大家介紹了js類庫styled-components快速入門的教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • 交互式可視化js庫gojs使用介紹及技巧

    交互式可視化js庫gojs使用介紹及技巧

    這篇文章主要介紹了如何使用可視化庫gojs及使用時的小技巧,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2022-01-01

最新評論

图木舒克市| 新宁县| 岚皋县| 岑溪市| 原平市| 图们市| 丹阳市| 延安市| 古浪县| 吕梁市| 石柱| 凤庆县| 安化县| 桐柏县| 东方市| 图们市| 新竹县| 邯郸县| 射洪县| 额尔古纳市| 图木舒克市| 太康县| 乐东| 云霄县| 耿马| 沂源县| 清原| 永宁县| 灌云县| 陆丰市| 新巴尔虎左旗| 关岭| 姜堰市| 南乐县| 英德市| 麟游县| 崇义县| 建始县| 洛隆县| 平谷区| 翼城县|