• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    使用socket.io制做簡易WEB聊天室

    來源:懂視網 責編:小采 時間:2020-11-27 22:22:16
    文檔

    使用socket.io制做簡易WEB聊天室

    使用socket.io制做簡易WEB聊天室:使用socket.io做一個簡單的WEB聊天室,可消息私發,供大家參考,具體內容如下 1. 創建一個空的工程目錄 空的目錄命名為chat-web 2. 創建package.json 使用命令:npm init,會引導你設置package.json的內容. 3.安裝依賴包 使用命令: npm i
    推薦度:
    導讀使用socket.io制做簡易WEB聊天室:使用socket.io做一個簡單的WEB聊天室,可消息私發,供大家參考,具體內容如下 1. 創建一個空的工程目錄 空的目錄命名為chat-web 2. 創建package.json 使用命令:npm init,會引導你設置package.json的內容. 3.安裝依賴包 使用命令: npm i

    使用socket.io做一個簡單的WEB聊天室,可消息私發,供大家參考,具體內容如下

    1. 創建一個空的工程目錄

    空的目錄命名為chat-web

    2. 創建package.json

    使用命令:npm init,會引導你設置package.json的內容.

    3.安裝依賴包

    使用命令:

    npm install --save express 
    npm install --save socket.io
    

    安裝完成后你會在工程目錄看見有自動生成的node_modules文件夾

    4.編寫index.js腳本

    var app = require('express')();
    var http = require('http').Server(app);
    var io = require('socket.io')(http);
    
    app.get('/', function(req, res){
     console.log("dir:" + __dirname);
     res.sendFile( __dirname + '/index.html');
    });
    //所有注冊用戶的socket集合(socketMap)
    var sm = {};
    io.on('connection', function(socket){
     socket.on('chat-reg',function(data){
     console.log("chat-reg:" + JSON.stringify(data));
     //注冊 :data 格式:{user:"alisa"}
     //消息 :data 格式:{user:"alisa",msg:"@someone hello!!!"}
     //格式說明:msg內容以@符號開頭,以空格分隔用戶名和消息體的說明是私聊
     sm[data.user] = socket;
     socket.emit('chat-reg',{code:200,msg:"reg success"});
     });
     socket.on('chat-data',function(data){
    
     console.log("chat-data:" + JSON.stringify(data));
     if(data.msg[0] == '@'){//以@符號開頭,說明這句消息是私聊
     //將消息顯示在自己的聊天記錄上
     socket.emit('chat-data',data);
     //查找第一個空格的位置
     var i = data.msg.indexOf(' ');
     //得到用戶名
     var u = data.msg.substring(1,i);
     //得到消息體
     var m = data.msg.substring(i,data.msg.length);
     if(typeof sm[u] != 'undefined'){
     //在socket集合中得到目標用戶的socket,并且發送消息事件
     sm[u].emit('chat-data',{user:data.user,msg:"[private]" + m});
     }
     }else{
     //不是以@開頭的消息發送給所有連接的用戶
     io.sockets.emit('chat-data',data);
     }
     });
    });
    //監聽在3000端口
    http.listen(3000, function(){
     console.log('listening on:3000');
    });
    

    5.寫index.html

    <!doctype html>
    <html>
    <head>
     <title>私人聊天室</title>
     <style>
     * { margin: 0; padding: 0; box-sizing: border-box; }
     body { font: 13px Helvetica, Arial; }
     form { background: #000; padding: 3px; position: fixed; bottom: 0; width: 100%; }
     form input { border: 0; padding: 10px; width: 90%; margin-right: .5%; }
     form button { width: 9%; background: rgb(130, 224, 255); border: none; padding: 10px; }
     #messages { list-style-type: none; margin: 0; padding: 0; }
     #messages li { padding: 5px 10px; }
     #messages li:nth-child(odd) { background: #eee; }
    
     #info{
     height: 50px;
     text-align: center;
     line-height: 50px;
     background-color: #333;
     color: white;
     }
     </style>
    </head>
    <body>
     <div id="info"></div>
     <ul id="messages"></ul>
     <form action="">
     <input id="m" autocomplete="off" /><button>Send</button>
     </form>
     <script src="http://cdn.bootcss.com/socket.io/1.7.1/socket.io.min.js"></script>
     <script src="http://cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>
     <script>
     //頁面加載的時候隨機生成一個用戶名
     var user = "user" + Math.floor(Math.random()*1000);
     //打開一個socket,io()方法可以有namespace參數,默認為`/`,具體用法見官方
     var socket = io();
     //發送一個用戶注冊事件,在服務器端注冊用戶名
     socket.emit('chat-reg',{user:user});
     //將用戶名顯示在信息欄
     $("#info").text("您的用戶名:"+user);
     $('form').submit(function(){
     //發送聊天信息
     socket.emit('chat-data', {user:user,msg:$('#m').val()});
     $('#m').val('');
     return false;
     });
     //監聽服務端發送的聊天信息,并將其顯示在頁面中
     socket.on('chat-data', function(data){
     $('#messages').append($('<li>').text("[" + data.user + "]:" + data.msg));
     });
     //注冊成功后,在控制臺顯示返回的信息
     socket.on('chat-reg',function(data){
     console.log(JSON.stringify(data));
     });
     </script>
    </body>
    </html>
    

    6.測試

    在控制臺工程目錄下運行node index.js.
    在瀏覽器中訪問:localhost:3000
    你會看到下圖

    你可以多打開幾個瀏覽器窗口,模擬多個用戶。
    趕緊動手試試效果吧。

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    使用socket.io制做簡易WEB聊天室

    使用socket.io制做簡易WEB聊天室:使用socket.io做一個簡單的WEB聊天室,可消息私發,供大家參考,具體內容如下 1. 創建一個空的工程目錄 空的目錄命名為chat-web 2. 創建package.json 使用命令:npm init,會引導你設置package.json的內容. 3.安裝依賴包 使用命令: npm i
    推薦度:
    標簽: 簡易 簡單 聊天室
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 亚洲av永久无码精品国产精品| 国产精品亲子乱子伦xxxx裸| 亚洲精品无码久久久久AV麻豆| 国产亚洲精品高清在线| 无码人妻精品中文字幕| 国产99精品一区二区三区免费| 国内精品伊人久久久久AV影院| 欧美精品福利视频一区二区三区久久久精品 | 6一12呦女精品| 亚洲精品字幕在线观看| 精品久久久久中文字| 亚洲日本精品一区二区| laowang在线精品视频| 久久精品国产亚洲av日韩 | 精品国产污污免费网站| 麻豆亚洲AV永久无码精品久久| 免费精品精品国产欧美在线| 国产精品内射视频免费| 日本精品一区二区三区在线观看| 久久99精品国产麻豆| 中文字幕九七精品乱码 | 国产乱码精品一区二区三区四川人| 亚洲精品一品区二品区三品区| 久久夜色撩人精品国产| 国产香蕉国产精品偷在线| 91精品国产福利在线观看麻豆| 欧美+亚洲+精品+三区| 国产精品高清视亚洲精品| 97精品国产手机| HEYZO无码综合国产精品227| 国产在线精品一区二区中文| 欧美日韩人妻精品一区二区在线 | 午夜精品乱人伦小说区| 伊人久久综合精品无码AV专区| 亚洲国产精品成人网址天堂| 亚洲精品无码你懂的网站| 亚洲A∨精品一区二区三区| 日韩精品久久久久久| 久久国产免费观看精品3| 全国精品一区二区在线观看| 黑人无码精品又粗又大又长|