04_node.js模拟聊天室

创建小型聊天室
项目目录结构

  • index1.html
       <!DOCTYPE html>
        <html lang="en">
  
        <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <meta http-equiv="X-UA-Compatible" content="ie=edge">
            <title>Document</title>
            <style>
                div {
                    width: 400px;
                    height: 300px;
                    border: 1px solid orange;
                }
            </style>
        </head>
        
        <body>
            <div></div>
            <input type="text" name="inp" id="inp">
            <button>发送</button>
        </body>
        <script src="../socketClient.js"></script>
        <script>
            var sub = document.querySelector("button");
            var msg = document.querySelector("#inp");
            sub.onclick = function () {
                var val = msg.value;
                ws.send(val);
                msg.value = "";
            }
        </script>
        
        </html>
  • socketClient.js
    	const ws = new WebSocket("ws://10.31.153.18:8080");
        ws.opopen = () => {
            ws.send("aaaaaaaa");
        }
        ws.onmessage = (msg) => {
            var content = document.querySelector("div");
            content.innerHTML += msg.data + "<br/>";
        }
  • clientServer.js
const express = require("express");
const app = express();
const PORT = 7000;
const HOST = "10.31.153.18";
const path = require("path");

app.use(express.static(path.join(__dirname, "client")));

app.get("/", (req, res, next) => {
    res.send("hello")
})

app.listen(PORT, HOST, () => {
    console.log(`客户端服务器运行在:http://${HOST}:${PORT}`);
})
  • socketServer.js
const WebSocket = require("ws");

const server = new WebSocket.Server({
    port: 8080,
    host: "10.31.153.18"
})
const clients = {};
let count = 0;
server.on("connection", client => {
    client.name = ++count;
    clients[client.name] = client;
    client.on("message", msg => {
        console.log(msg);
        boardCast(msg);
    });
    client.on("close", () => {
        console.log(`客户端${client.name}下线`);
        delete clients[client.name];
    })
})

function boardCast(msg) {
    for (var key in clients) {
        clients[key].send(`客户端${key}说:${msg}`)
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值