Nodejs 使用 socket.io 簡單實現實時通信


官網文檔: https://www.socket.coms

安裝

npm install socket.io

服務端

const express = require('express');
const app     = express();
const server  = require('http').createServer(app);
const io      = require('socket.io')(server);

// 設置模板引擎
app.set('views',  './view');
app.engine('.html', require('ejs').__express);
app.set('view engine', 'html');

// 設置靜態文件托管目錄
app.use(express.static('node_modules'));

app.get('/', (request, response) => {
    response.render('index.html');
});

//監聽客戶端鏈接,回調函數會傳遞本次鏈接的socket
io.on('connection', socket => {
    // 監聽客戶端發送的信息
    socket.on("sentToServer", message => {
        // 給客戶端返回信息
        io.emit("sendToClient", {message});
    });
});

// 監聽連接斷開事件
socket.on("disconnect", () => {
    console.log("連接已斷開...");
});

server.listen(3000);

客戶端

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>how to use socket</title>
    <script src='/jquery/dist/jquery.min.js'></script>
    <script src="/socket.io/socket.io.js"></script>
</head>
<body>
    <form action="#">
        <input type="text" id="message">
        <button id="send">send</button>
    </form>
    <script>
        // 1. 與服務器端建立連接
        const socket = io.connect("http://localhost:3000");

        // 2. 監聽send按鈕點擊的事件
        $("#send").click(function(){
            // 獲取輸入的信息
            let message = $("#message").val().trim();
            // 向服務器端發送信息
            socket.emit("sentToServer", message);
        });

        // 3. 獲取服務端發送過來的信息
        socket.on("sendToClient", message => {
            console.log(message);
        });
        /**
         * 發布訂閱(廣播), 一端發布, 可以讓多端觸發
         */
    </script>
</body>
</html>
7942449-f633e0abfe74052e.jpg
socket


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM