本文共 3622 字,大约阅读时间需要 12 分钟。
本项目旨在开发一个简易的终端聊天室系统,支持用户注册、发送广播消息以及点对点私信功能。以下将详细介绍系统的实现过程及相关技术细节。
chatroom的目录,项目结构如下:chatroom/├── config├── client.js├── server.js├── p2p.js├── broadcast.js├── signup.js└── package.json
config目录下创建一个config.js文件,内容如下:module.exports = { port: 3000, host: "127.0.0.1"} net库连接到服务器,具体实现如下:var net = require('net');var config = require('./config');var client = net.createConnection({ port: config.port, host: config.host});// 用户注册处理client.on('connect', function() { console.log('请输入用户名:'); process.stdin.on('data', function(data) { data = data.trim(); if (!username) { var send = { protocol: 'signup', username: data }; client.write(JSON.stringify(send)); return; } // 消息处理逻辑 // ... });}); client.on('data', function(data) { data = JSON.parse(data); switch(data.protocol) { case 'broadcast': console.log(data.message); break; case 'p2p': // 处理点对点消息 // ... break; default: break; }}); var server = net.createServer();var users = {};server.on('connection', function(socket) { socket.on('data', function(data) { data = JSON.parse(data); switch(data.protocol) { case 'signup': signup.handle(socket, data, users); break; case 'broadcast': broadcast.handle(data, users); break; case 'p2p': p2p.handle(socket, data, users); break; default: break; } }); socket.on('error', function() { console.log('客户端异常退出'); });});server.listen(config.port, config.host, function() { console.log('服务器正在监听端口' + config.port);}); exports.handle = function(socket, data, users) { var username = data.username; if (!users[username]) { users[username] = socket; socket.write(JSON.stringify({ protocol: 'signup', code: 1000, username: username, message: '注册成功' })); } else { socket.write(JSON.stringify({ protocol: 'signup', code: 1001, message: '用户名已存在,请重新输入' })); }}; exports.handle = function(data, users) { var from = data.from; var message = data.message; message = from + ' 说:' + message; var send = { protocol: 'broadcast', message: message }; send = Buffer.from(JSON.stringify(send)); for (var username in users) { var socket = users[username]; socket.write(send); }}; exports.handle = function(socket, data, users) { var from = data.from; var to = data.to; var message = data.message; var receiver = users[to]; if (!receiver) { socket.write(JSON.stringify({ protocol: 'p2p', code: 2001, message: '用户不存在' })); } else { socket.write(JSON.stringify({ protocol: 'p2p', code: 2000, from: data.from, message: message })); }}; npm install net
node server.js
打开另一个终端窗口,执行:
node client.js
按照提示输入用户名即可开始使用聊天室系统。
用户注册
输入用户名后,系统会返回注册结果。发送广播消息
输入广播消息后,消息将实时发送至所有在线用户。发送私信
输入格式为<收件人>: 内容,将消息直接发送给指定用户。接收消息
系统会实时显示收到的消息,支持广播消息和私信。通过以上实现,可以轻松创建一个功能齐全的终端聊天室系统。系统支持用户注册、发送广播消息和点对点私信,适合用于需要简单即时通信的场景。
转载地址:http://jpjfk.baihongyu.com/