node实现websocket聊天室

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node实现websocket聊天室相关的知识,希望对你有一定的参考价值。

const express = require(‘express‘);
const app = express();
const ws = require(‘ws‘).Server;
const wss = new ws({port: 3001});
var sockets = [];

wss.on(‘connection‘, function(ws) {
    ws.send(‘连接成功‘);
    ws.send(‘欢迎进入聊天室‘);
    sockets.push(ws);

    ws.on(‘message‘, function(data) {
        ws.send(data);

        try {
            sockets.forEach(function (socket) {
                 if (ws != socket) {
                    socket.send(data);
                 }
            });
        } catch (err) {
            console.log(err);
        }
    });

    ws.on(‘error‘, function(e) {
        console.log(e);
    });
    ws.on(‘close‘, function(e) {
        console.log(e);
    });
});

app.use(express.static(__dirname)).listen(3000, ‘localhost‘);
app.get(‘/‘, (req, res) => {
    res.sendFile(__dirname+‘/websocket.html‘);
});

  

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>websocket</title>
    <link rel="stylesheet" href="test.css">
</head>
<body>
<input id="msg" type="text"/>
<button id="send" onclick="sendMsg()">发送</button>
<script>
    var ws = new WebSocket(‘ws://localhost:3001‘);
    ws.onopen = function(e) {
        console.log(e);
    };

    ws.onmessage = function(data) {
        console.log(data.data);
        showMsg(data.data);
    };

    ws.onerror = function(e) {
        console.log(e);
    };
    ws.onclose = function(e) {
        console.log(e);
    };


    function sendMsg() {
        var msg = document.getElementById(‘msg‘).value;
        var now = (new Date()).toLocaleTimeString();
        ws.send(now+‘@‘+msg);
    }

    function showMsg(data) {
        var msg = document.createElement(‘div‘);
        msg.innerHTML = data;
        document.body.appendChild(msg);
    }

    document.onkeyup = function(event) {
        event = event || window.event;
        if (event.keyCode == 13) {
            sendMsg();
        }
    };
</script>
</body>
</html>

  

以上是关于node实现websocket聊天室的主要内容,如果未能解决你的问题,请参考以下文章

Node + H5 + WebSocket + Koa2 实现简单的多人聊天

node实现websocket聊天室

Node.js+websocket+mongodb实现即时聊天室

Node.js websocket 使用 socket.io库实现实时聊天室

❤️一个聊天室案例带你了解Node.js+ws模块是如何实现websocket通信的

vue使用WebSocket模拟实现聊天功能-简易版