博客
关于我
node.js 简易聊天室
阅读量:791 次
发布时间:2023-02-16

本文共 3622 字,大约阅读时间需要 12 分钟。

终端聊天室开发实例

项目概述

本项目旨在开发一个简易的终端聊天室系统,支持用户注册、发送广播消息以及点对点私信功能。以下将详细介绍系统的实现过程及相关技术细节。

服务器端配置

  • 目录结构
    要实现该功能,首先需要创建一个名为chatroom的目录,项目结构如下:
  • chatroom/├── config├── client.js├── server.js├── p2p.js├── broadcast.js├── signup.js└── package.json
    1. 配置文件
      config目录下创建一个config.js文件,内容如下:
    2. module.exports = {    port: 3000,    host: "127.0.0.1"}

      客户端实现

    3. 客户端连接
      客户端使用net库连接到服务器,具体实现如下:
    4. 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;        }        // 消息处理逻辑        // ...    });});
      1. 消息发送与处理
        客户端支持两种消息类型:广播消息和点对点消息。具体实现如下:
      2. client.on('data', function(data) {    data = JSON.parse(data);    switch(data.protocol) {        case 'broadcast':            console.log(data.message);            break;        case 'p2p':            // 处理点对点消息            // ...            break;        default:            break;    }});

        服务器端实现

      3. 连接监听
        服务器监听客户端连接,处理不同类型的消息:
      4. 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);});

        消息处理模块

      5. 注册模块
        处理用户注册请求:
      6. 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: '用户名已存在,请重新输入'        }));    }};
        1. 广播模块
          广播消息至所有在线用户:
        2. 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);    }};
          1. 点对点模块
            处理点对点消息:
          2. 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        }));    }};

            项目部署

          3. 依赖安装
            首先安装必要的依赖:
          4. npm install net
            1. 运行说明
              在终端中执行以下命令:
              node server.js

              打开另一个终端窗口,执行:

              node client.js

              按照提示输入用户名即可开始使用聊天室系统。

            2. 系统功能

            3. 用户注册

              输入用户名后,系统会返回注册结果。

            4. 发送广播消息

              输入广播消息后,消息将实时发送至所有在线用户。

            5. 发送私信

              输入格式为<收件人>: 内容,将消息直接发送给指定用户。

            6. 接收消息

              系统会实时显示收到的消息,支持广播消息和私信。

            7. 总结

              通过以上实现,可以轻松创建一个功能齐全的终端聊天室系统。系统支持用户注册、发送广播消息和点对点私信,适合用于需要简单即时通信的场景。

    转载地址:http://jpjfk.baihongyu.com/

    你可能感兴趣的文章
    node.js安装方法
    查看>>
    Node.js官网无法正常访问时安装NodeJS的方法
    查看>>
    node.js模块、包
    查看>>
    node.js模拟qq漂流瓶
    查看>>
    node.js的express框架用法(一)
    查看>>
    Node.js的交互式解释器(REPL)
    查看>>
    Node.js的循环与异步问题
    查看>>
    Node.js高级编程:用Javascript构建可伸缩应用(1)1.1 介绍和安装-安装Node
    查看>>
    nodejs + socket.io 同时使用http 和 https
    查看>>
    NodeJS @kubernetes/client-node连接到kubernetes集群的方法
    查看>>
    NodeJS API简介
    查看>>
    nodejs Error: request entity too large解决方案
    查看>>
    Nodejs express 获取url参数,post参数的三种方式
    查看>>
    nodejs http小爬虫
    查看>>
    nodejs libararies
    查看>>
    vue3+element-plus 项目中 el-switch 刷新后自动触发change?坑就藏在这里!
    查看>>
    nodejs npm常用命令
    查看>>