\n \n \n\n## 怎么测试\n\n运行 node server.js,然后在浏览器里打开两个 http://localhost:3000 的窗口,分别输入不同的昵称,就能互相聊天了。\n\n## 总结\n\n一个能用的聊天室,核心代码不到100行。WebSocket是现代","datePublished":"2026-03-30 00:00:02","dateModified":"2026-03-30 00:00:02","wordCount":5044,"inLanguage":"zh-CN","author":{"@type":"Person","name":"站长","url":"https://woshird.com"},"publisher":{"@type":"Organization","name":"人人都是程序员","url":"https://woshird.com","logo":{"@type":"ImageObject","url":"https://woshird.com/favicon.ico"}},"mainEntityOfPage":{"@type":"WebPage","@id":"https://woshird.com/article/simple-chat-room"},"isPartOf":{"@type":"WebSite","name":"人人都是程序员","url":"https://woshird.com"},"about":{"@type":"Thing","name":"做个网站"},"keywords":"做个网站,,AI编程,做一个简易聊天室","interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":126},{"@type":"InteractionCounter","interactionType":"https://schema.org/ReadAction","userInteractionCount":2301}]}
🌐
🌐
🌐
🌐

做一个简易聊天室

站长
2026年3月30日 · 阅读 2301 · 点赞 126 · 预计 4 分钟
分享:

聊天室是怎么工作的

你用微信聊天的时候,消息是实时到达的,不需要你刷新页面。这背后用的技术叫 WebSocket——它就像一条电话线,一头是你,一头是服务器,接通后双方可以随时说话,不用每次都重新拨号。

相比之下,普通的网页请求像写信:你写一封信寄出去(请求),等对方回信(响应),再寄一封……效率太低了。WebSocket就是把"写信"升级成了"打电话"。

我们要做什么

一个多人聊天室:

  • 打开页面输入昵称

  • 在输入框打字,按回车发送

  • 所有在线的人都能实时看到消息

  • 有人加入或离开时显示提示
  • 第一步:初始化项目

    mkdir chat-room
    cd chat-room
    npm init -y
    npm install express ws

    ws 是一个 WebSocket 库,帮我们处理实时通信。

    第二步:写服务端

    创建 server.js:

    var express = require("express");
    var http = require("http");
    var WebSocket = require("ws");

    var app = express();
    app.use(express.static("public"));
    var server = http.createServer(app);
    var wss = new WebSocket.Server({ server: server });

    var clients = [];

    wss.on("connection", function(ws) {
    var username = "匿名用户";
    clients.push(ws);

    ws.on("message", function(data) {
    var msg = JSON.parse(data);

    if (msg.type === "join") {
    username = msg.name;
    broadcast({
    type: "system",
    text: username + " 加入了聊天室"
    });
    } else if (msg.type === "chat") {
    broadcast({
    type: "chat",
    name: username,
    text: msg.text,
    time: new Date().toLocaleTimeString("zh-CN")
    });
    }
    });

    ws.on("close", function() {
    clients = clients.filter(function(c) {
    return c !== ws;
    });
    broadcast({
    type: "system",
    text: username + " 离开了聊天室"
    });
    });
    });

    function broadcast(message) {
    var data = JSON.stringify(message);
    for (var i = 0; i < clients.length; i++) {
    if (clients[i].readyState === WebSocket.OPEN) {
    clients[i].send(data);
    }
    }
    }

    server.listen(3000, function() {
    console.log("聊天室运行在 http://localhost:3000");
    });

    broadcast函数是广播——把消息发给所有在线的人,就像在教室里大声说话,所有人都能听到。

    第三步:做聊天页面

    创建 public/index.html:




    聊天室




    简易聊天室




    onkeypress="if(event.key==='Enter')send()" />



    怎么测试

    运行 node server.js,然后在浏览器里打开两个 http://localhost:3000 的窗口,分别输入不同的昵称,就能互相聊天了。

    总结

    一个能用的聊天室,核心代码不到100行。WebSocket是现代Web开发的重要技术,掌握了它你就能做很多实时应用:在线协作文档、多人游戏、实时通知等。

    站长
    人人都是程序员,站长
    分享: