天天看點

express + socket.io實作超簡易聊天室

什麼是socket.io

socket.io是webSocket的一個封裝元件,實作雙向通信,可以用這個來實作聊天室功能、線上小遊戲等等,是個有趣好玩的東西,部落客就喜歡搗鼓這些

實作聊天室思路

聊天室就是要聊天嘛,就像打電話一樣,我這邊說話你那邊應該要馬上聽到,是以就需要用到雙向通信,浏覽器發出一條資訊比如是一個字元串'message',服務端接收然後立馬将它發送出去給需要接收的浏覽器

首先下載下傳express和socket.io的依賴包

cnpm install --save express
cnpm install --save socket.io
           

前端代碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .chat{
            width: ;
            height: ;
            text-align: center;
            margin:  auto;
            border:  solid ;
        }
        .message{
            width: ;
            height: ;
        }
    </style>
</head>
<body>
    <div class="chat">
        <div class="message"></div>
        <input id="text" type="text" placeholder="請輸入聊天資訊">
        <button onclick="chat()">發送資訊</button>
    </div>

    <script src="/socket.io/socket.io.js"></script>

    <script>
        var message = document.getElementsByClassName('message')[]
        var socket = io.connect('http://localhost:1234');
        //從服務端接收資料
        socket.on('message',function (data) {
        
            message.innerHTML += data + '<br>';
        })
        function chat(){
            var text = document.getElementById('text').value
            //向服務端發送資料
            socket.emit('message', {message:text});


        }

    </script>
</body>
</html>
           

node代碼

var express = require('express')
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);


//提供靜态檔案服務
app.use(express.static(__dirname));



io.on('connection', function (socket) {
    socket.on('message', function (data) {
        //服務端像是以也沒發送資料
        io.sockets.emit('message', data.message);
    });

});

server.listen(,function () {
    console.log('連接配接成功');
})
           

幾個要點稍微提一下首先是前端引入js檔案時候

可能你會疑惑本地沒有這個檔案,但其實你在服務端運作你的html時候它就會自動生成是以不用擔心直接這樣引入就行啦

關于發送接收資訊

socket.emit()//發送
socket.on()//接收

io.sockets.emit()//隻要服務端這樣哦,像所有連接配接server的發送就像廣播了
           

最後運作node,打開兩個對應端口的html,結果為

express + socket.io實作超簡易聊天室

如果有哪裡說的不對或者不好還請見諒!謝謝!

繼續閱讀