1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Node.js 學(xué)習(xí)(六)——websocket 組件實(shí)現(xiàn)在線聊天室 demo

        共 1791字,需瀏覽 4分鐘

         ·

        2017-04-26 17:01

        Node.js學(xué)習(xí)(六)——websocket組件實(shí)現(xiàn)在線聊天室demo

        要實(shí)現(xiàn)的功能

        1. 在線人員列表展示,上下線刷新在線人員列表
        2. 即時(shí)聊天

        demo圖片

        用express新建項(xiàng)目

        express -e websocketdemo

        下載依賴

        在websocketdemo目錄下執(zhí)行命令,在項(xiàng)目下生成node_modules目錄

        npm install

        添加websocket模塊

        npm install nodejs-websocket

        實(shí)現(xiàn)代碼

        項(xiàng)目目錄

        在view下添加一個(gè)chartroom.ejs頁面

        
        
        
            
            聊天室
            
            
        
        
        
        當(dāng)前登錄人:

        index.js修改

        1. 添加跳轉(zhuǎn)到頁面的路由
        2. 添加websocket服務(wù)器
        3. 服務(wù)器中3種類型的邏輯處理
        4. code=0,代表初始化客戶端請求。1.將當(dāng)前連接放入在線人集合中。2.向所有在線人發(fā)出更新在線人的消息。
        5. code=1,代表發(fā)送消息。將所有在線人的消息界面追加上當(dāng)前發(fā)送的消息。
        6. code=2,代表人員列表更新。上線是新增一個(gè)在線人員,下線或刷新瀏覽器是減少一個(gè)在線人員。
        var express = require('express');
        var router = express.Router();
        var ws = require("nodejs-websocket");
        //存所有人的連接
        var onLineUser = new Array();
        
        /* GET home page. */
        router.get('/', function(req, res, next) {
          res.render('index', { title: 'Express' });
        });
        
        //聊天室頁面
        router.get('/chartroom', function(req, res, next) {
          res.render('chartroom');
        });
        
        //聊天服務(wù)器8002
        var server = ws.createServer(function (conn) {
          conn.on("text", function (str) {
            var obj = JSON.parse(str);
            switch(obj.code){
              case 0:initClient(conn);break;
              case 1:returnMsg(conn,obj);break;
              case 2:userListHandle(conn,obj);break;
            }
          })
          conn.on("close", function (code, reason) {
            console.log("關(guān)閉連接")
          });
          conn.on("error", function (code, reason) {
            console.log("異常關(guān)閉")
          });
        }).listen(8002)
        
        //發(fā)送消息,返回消息
        function returnMsg(conn,obj){
          if(userList.length != 0){
            var returnText = obj.name+" "+obj.date+":\n"+"  "+obj.sendContent+"\n";
            var returnObj = new Object();
            returnObj.code = 1;
            returnObj.returnText=returnText;
            for(var i=0;i -1) {
            this.splice(index, 1);
          }
        };
        
        module.exports = router;
        
        瀏覽 101
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产精品内射婷婷 | 中文字幕日本有码 | 日韩强奸在线 | 啊~喷水了~嗯~高潮了视频 | 波多野42部无码喷潮更新时间 | 日韩黄色A片 | 成人在线三级片 | 精品国产露脸精彩对白 | 黄色大片免费看 | 夜夜嗨av一区二区三区网页 |