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

WebSocket+node.js創(chuàng)建即時通信的Web聊天服務(wù)器

 更新時間:2016年08月08日 09:08:48   作者:fareise  
這篇文章主要為大家詳細(xì)介紹了WebSocket+node.js創(chuàng)建即時通信的Web聊天服務(wù)器的相關(guān)資料,感興趣的小伙伴們可以參考一下

本文實例node.js創(chuàng)建即時通信的Web聊天服務(wù)器,供大家參考,具體內(nèi)容如下

1.使用nodejs-websocket
 nodejs-websocket是基于node.js編寫的一個后端實現(xiàn)websocket協(xié)議的庫,
 連接:https://github.com/sitegui/nodejs-websocket。
 (1)安裝
 在項目目錄下通過npm安裝:npm install nodejs-websocket
 (2)創(chuàng)建服務(wù)器

 //引入nodejs-websocket
var ws = require(“nodejs-websocket”);
//調(diào)用createServer方法創(chuàng)建服務(wù)器,回調(diào)函數(shù)中的conn是connection的實例
var server = ws.create(function(conn){
  console.log(“New connection”);
  //監(jiān)聽text事件,text事件每當(dāng)從服務(wù)器收到文本類型數(shù)據(jù)時觸發(fā),回調(diào)函數(shù)的參數(shù)為傳過來的字符串
  conn.on(“text”, function(str){
 console.log(“Received ” + str);
  });
  //監(jiān)聽close事件,每次斷開連接時觸發(fā)
  conn.on(“close”, function(code, reason){
 console.log(“Connection closed”);
  })
}).listen(8888);

 2.客戶端使用websocket
 在客戶端首先需要實例化一個websocket對象:ws = new WebSocket("ws://localhost:5000");其中的參數(shù)傳入格式為ws://+url,這就和http協(xié)議前綴http://一樣。接下來就可以通過websocket內(nèi)置的一些方法進行事件監(jiān)聽和數(shù)據(jù)展示。
 這里統(tǒng)一介紹各個監(jiān)聽事件:onopen當(dāng)服務(wù)器和客戶端建立起連接時觸發(fā);onmessage當(dāng)客戶端收到服務(wù)器發(fā)送的數(shù)據(jù)時觸發(fā); onclose當(dāng)客戶端和服務(wù)器的連接關(guān)閉時觸發(fā);onerror當(dāng)連接出現(xiàn)錯誤時觸發(fā)。

3.使用websocket+nodejs實現(xiàn)在線聊天室
 (1)html和css代碼省略
 (2)客戶端js:    

oConnect.onclick=function(){
    ws=new WebSocket('ws://localhost:5000');
     ws.onopen=function(){
       oUl.innerHTML+="<li>客戶端已連接</li>";
     }
    ws.onmessage=function(evt){
      oUl.innerHTML+="<li>"+evt.data+"</li>";
    }
    ws.onclose=function(){
      oUl.innerHTML+="<li>客戶端已斷開連接</li>";
    };
    ws.onerror=function(evt){
      oUl.innerHTML+="<li>"+evt.data+"</li>";
 
    };
  };
  oSend.onclick=function(){
    if(ws){
      ws.send(oInput.value);
    }
  }(3)服務(wù)器端js:
 /*
websocket支持兩種類型的數(shù)據(jù)傳輸:text類型和binary類型,其中二進制數(shù)據(jù)是通過流的模式發(fā)送和讀取的
*/
var app=require('http').createServer(handler); //為了簡化代碼,將服務(wù)器創(chuàng)建具體代碼放到handler函數(shù)中
var ws=require('nodejs-websocket');
var fs=require('fs');
app.listen(8888);
function handler(req,res){
  //__dirname返回該文件所在的當(dāng)前目錄。調(diào)用readFile方法進行文件讀取
  fs.readFile(__dirname+'/index.html',function(err,data){
    if(err){
      res.writeHead(500);
      return res.end('error ');
    }
    res.writeHead(200);
    res.end(data);
  });
}
//以上步驟成功在8888端口渲染出相應(yīng)的html界面
//conn是對應(yīng)的connection的實例
var server = ws.createServer(function(conn){
  console.log('new conneciton');
  //監(jiān)聽text事件,每當(dāng)收到文本時觸發(fā)
  conn.on("text",function(str){
    broadcast(server,str);
  });
  //當(dāng)任何一端關(guān)閉連接時觸發(fā),這里就是在控制臺輸出connection closed
  conn.on("close",function(code,reason){
    console.log('connection closed');
  })
}).listen(5000);
//注意這里的listen監(jiān)聽是剛才開通的那個服務(wù)器的端口,客戶端將消息發(fā)送到這里處理
 
function broadcast(server, msg) {
  //server.connections是一個數(shù)組,包含所有連接進來的客戶端
  server.connections.forEach(function (conn) {
    //connection.sendText方法可以發(fā)送指定的內(nèi)容到客戶端,傳入一個字符串
    //這里為遍歷每一個客戶端為其發(fā)送內(nèi)容
    conn.sendText(msg);
  })
}

以上就是本文

的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用 Node.js 開發(fā)資訊爬蟲流程

    使用 Node.js 開發(fā)資訊爬蟲流程

    這篇文章主要介紹了使用 Node.js 開發(fā)資訊爬蟲流程,爬蟲流程概括下來就是把目標(biāo)網(wǎng)站的HTML下載到本地再進行數(shù)據(jù)提取。具體內(nèi)容詳情大家參考下本文
    2018-01-01
  • Node.js 緩沖區(qū)(Buffer)模塊的方法及實例分析

    Node.js 緩沖區(qū)(Buffer)模塊的方法及實例分析

    在本篇文章里小編給大家整理了一篇關(guān)于Node.js 緩沖區(qū)(Buffer)模塊的方法及實例分析,對此有興趣的朋友們可以跟著學(xué)習(xí)下。
    2022-01-01
  • NodeJs基本語法和類型

    NodeJs基本語法和類型

    這篇文章主要介紹了NodeJs基本語法和類型的相關(guān)資料,需要的朋友可以參考下
    2015-02-02
  • node-sass安裝失敗的原因與解決方法

    node-sass安裝失敗的原因與解決方法

    這篇文章主要給大家介紹了關(guān)于node-sass安裝失敗的原因與解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • node.js cookie-parser 中間件介紹

    node.js cookie-parser 中間件介紹

    這篇文章主要介紹node.js cookie-parser 中間件,講解的比較詳細(xì),需要的朋友可以參考下。
    2016-06-06
  • node.js中的url.format方法使用說明

    node.js中的url.format方法使用說明

    這篇文章主要介紹了node.js中的url.format方法使用說明,本文介紹了url.format的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • 如何開發(fā)一個漸進式Web應(yīng)用程序PWA

    如何開發(fā)一個漸進式Web應(yīng)用程序PWA

    這篇文章主要介紹了如何開發(fā)一個漸進式Web應(yīng)用程序PWA,對漸進式Web應(yīng)用程序感興趣的同學(xué),可以參考下
    2021-05-05
  • Node.js實現(xiàn)發(fā)送郵件功能

    Node.js實現(xiàn)發(fā)送郵件功能

    這篇文章主要為大家詳細(xì)介紹了Node.js實現(xiàn)發(fā)送郵件功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 解決Mac安裝thrift因bison報錯的問題

    解決Mac安裝thrift因bison報錯的問題

    今天小編就為大家分享一篇解決Mac安裝thrift因bison報錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 用純Node.JS彈出Windows系統(tǒng)消息提示框?qū)嵗?MessageBox)

    用純Node.JS彈出Windows系統(tǒng)消息提示框?qū)嵗?MessageBox)

    這篇文章主要介紹了用純Node.JS彈出Windows系統(tǒng)消息提示框?qū)嵗?MessageBox),非常具有實用價值,需要的朋友可以參考下
    2017-05-05

最新評論

乡宁县| 日喀则市| 东山县| 荣昌县| 且末县| 娄底市| 长白| 云和县| 湘阴县| 淮滨县| 阿瓦提县| 武隆县| 田东县| 从江县| 隆子县| 特克斯县| 榆社县| 枞阳县| 克什克腾旗| 都兰县| 荃湾区| 兴海县| 景谷| 大关县| 麻阳| 枝江市| 崇礼县| 永宁县| 蕲春县| 张北县| 乐至县| 金湖县| 斗六市| 蒙阴县| 乐东| 镇雄县| 颍上县| 余庆县| 泊头市| 聊城市| 子长县|