# 示例3 聊天室升级版 ## 客户端 ```html WebSocket Demo
``` ## 服务端 ```js // server.js const ws = require('nodejs-websocket'); var dayjs = require("dayjs"); // 消息类型枚举 const message_type = { OPEN: 'open', CLOSE: 'close', MESSAGE: 'message', }; // 端口号 const PORT = 8080; // 所有用户数 var count = 0; function getTime(){ return dayjs().format('HH:mm'); } // 监听事件 var server = ws.createServer(function (conn) { console.log('New connection'); count++; conn.user_name = '用户' + count; broadcast({ type: message_type.OPEN, message: conn.user_name + '加入了聊天室', time: getTime(), }); // 接收客户端发送的数据 conn.on('text', function (data) { console.log('Received ' + data); // conn.sendText(data) broadcast({ type: message_type.MESSAGE, message: conn.user_name + ':' + data, time: getTime(), }); }); // 客户端断开 conn.on('close', function (code, reason) { console.log('Connection closed'); let message = conn.user_name + '离开了聊天室'; broadcast({ type: message_type.CLOSE, message: message, time: getTime(), }); }); // 客户端异常 conn.on('error', function (err) { console.log('异常'); }); }); // 广播给所有用户 function broadcast(data) { server.connections.forEach(function (conn) { conn.sendText(JSON.stringify(data)); }); } // 启动服务 server.listen(PORT, () => { console.log(`Server started on port ${PORT}`); }); ```