使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室

yizhihongxing

使用Angular和Node.js、socket.io搭建聊天室及多人聊天室的攻略如下:

环境安装

在开始前,需要安装好以下环境:

  • Node.js
  • Angular CLI

在命令行中输入以下命令进行安装:

# 安装 Node.js
sudo apt install nodejs
sudo apt install npm

# 安装 Angular CLI
npm install -g @angular/cli

后端

项目初始化

首先,在命令行中执行以下命令,创建一个新的 Node.js 项目:

mkdir socket-chatroom-backend
cd socket-chatroom-backend
npm init -y

然后,安装 socket.io 和 express:

npm install --save socket.io express

编写代码

创建 server.js 文件,并输入以下代码:

const express = require('express');
const app = express();
const http = require('http').createServer(app);
const io = require('socket.io')(http);

io.on('connection', (socket) => {
  socket.on('login', (data) => {
    socket.username = data.username;
    io.emit('user joined', socket.username);
  });

  socket.on('chat message', (msg) => {
    io.emit('chat message', `${socket.username}: ${msg}`);
  });

  socket.on('disconnect', () => {
    io.emit('user left', socket.username);
  });
});

http.listen(3000, () => {
  console.log('listening on *:3000');
});

以上代码创建了一个 Express 应用,并使用 socket.io 实现了聊天室后端的核心功能:接收用户连接、处理用户登录、处理聊天消息、处理用户断开连接。

运行项目

在命令行中执行以下命令,启动 Socket.IO 服务器:

node server.js

至此,后端代码的编写完成。

前端

创建 Angular 项目

首先,在命令行中输入以下命令,创建一个新的 Angular 项目:

ng new socket-chatroom-frontend

然后,进入项目目录,并启动开发服务器:

cd socket-chatroom-frontend
npm start

此时,打开浏览器访问 http://localhost:4200/ 可以看到默认的 Angular 欢迎页面。

编写代码

界面设计

在 app.component.html 文件中,输入以下代码,实现聊天室的界面设计:

<div>
  <h2>Socket.IO Chat</h2>
  <div>
    <input type="text" [value]="username" (input)="username=$event.target.value" placeholder="Your name">
    <button (click)="login()">Login</button>
  </div>
  <div *ngIf="isLoggedIn">
    <div>
      <div *ngFor="let message of messages">
        {{ message }}
      </div>
    </div>
    <div>
      <input type="text" [(ngModel)]="message" placeholder="Your message">
      <button (click)="send()">Send</button>
    </div>
  </div>
</div>

以上代码实现了聊天室的登录界面、消息列表和发送消息的功能。

TypeScript 代码

在 app.component.ts 文件中,输入以下代码,实现聊天室的核心功能:

import { Component } from '@angular/core';
import * as io from 'socket.io-client';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  private socketClient: SocketIOClient.Socket;
  private isLoggedIn = false;
  private messages: string[] = [];
  private message = '';
  private username = '';

  constructor() {
    this.socketClient = io('http://localhost:3000');

    this.socketClient.on('user joined', (username) => {
      this.messages.push(`${username} joined the chat`);
    });

    this.socketClient.on('user left', (username) => {
      this.messages.push(`${username} left the chat`);
    });

    this.socketClient.on('chat message', (message) => {
      this.messages.push(message);
    });
  }

  login() {
    this.socketClient.emit('login', { username: this.username });
    this.isLoggedIn = true;
  }

  send() {
    if (this.message) {
      this.socketClient.emit('chat message', this.message);
      this.message = '';
    }
  }
}

以上代码实现了聊天室的核心功能:连接 Socket.IO 服务器、处理用户登录、处理聊天消息、实时更新消息列表。

运行项目

在命令行中执行以下命令,启动前端项目:

npm start

然后,打开浏览器访问 http://localhost:4200/,即可使用聊天室功能。

示例说明

示例 1

假设有两个用户 A 和 B,他们都进入了聊天室。A 发送了一条消息 "Hello",B 立即能够收到这条消息,并在消息列表中显示 "A: Hello"。

示例 2

假设有三个用户 A、B 和 C,他们都进入了聊天室。C 进行登录操作,输入共享密码,管理员同意后C加入聊天室。A 发送了一条消息 "How are you today?",B 和 C 立即能够收到这条消息,并在消息列表中显示 "A: How are you today?"。当 C 感到这句话有意思,定位消息进行回答时,A 离开了聊天室。B 和 C 立即收到系统提示,"A left the chat"。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • 使用js实现单链解决前端队列问题的方法

    使用 JavaScript 实现单链解决前端队列问题的方法,可以分为以下几个步骤: 1. 创建队列类 我们可以使用面向对象的思想,创建一个队列类,里面包含一些常用的属性和方法。具体来说,我们可以定义一个 Queue 类,其中包含属性 head 和 tail 分别代表队列头尾指针,为空时都指向 null,以及方法 enqueue() 和 dequeue() 分…

    node js 2023年6月8日
    00
  • Webpack4.x的四个核心概念介绍

    Webpack4.x 是一款常用的 JavaScript 模块打包工具,为我们提供了便捷的前端开发解决方案,这里我们将重点介绍 Webpack4.x 的四个核心概念。 一、Entry(入口) Entry 是 Webpack4.x 打包时的入口文件,它指定了用哪个文件作为 Webpack 打包的起点。当 Webpack 从 Entry 开始打包时,会递归地解析…

    node js 2023年6月9日
    00
  • 详解Node全局变量global模块

    下面针对Node全局变量global模块做一份详细的攻略,内容如下: 什么是global模块 在Node中,global是全局变量的容器,也就是说在Node中所有的变量、函数、对象都是global的属性,因此global是Node中的全局命名空间。 如何使用global模块 我们可以使用全局变量global来声明全局变量,如下面的示例: // 全局属性gre…

    node js 2023年6月8日
    00
  • Node.js搭建小程序后台服务

    Node.js搭建小程序后台服务 Node.js是一种基于Chrome V8引擎的JavaScript运行环境,具有高效、轻便的特点。它的出现为JavaScript语言在服务器端的应用提供了一种全新的解决方案。本篇文章将详细讲解使用Node.js搭建小程序后台服务的完整攻略。 安装Node.js 在开始操作之前,首先需要安装Node.js。可以到 Node.…

    node js 2023年6月8日
    00
  • node.js文件操作系统实例详解

    Node.js文件操作系统实例详解 Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,它可以实现服务器端的JavaScript代码执行。Node.js提供了丰富的内置模块,其中包含文件操作系统模块,可以帮助我们对文件进行操作。下面就是Node.js文件操作系统实例的详细攻略。 1. 引入文件操作系统模块 要对文件进行操作,我们需…

    node js 2023年6月8日
    00
  • Windows下安装NodeJS的详细步骤

    下面是Windows下安装NodeJS的详细步骤的完整攻略。 1.下载NodeJS安装包 打开NodeJS的官网(https://nodejs.org),在页面中选择“Download”菜单,点击对应的下载链接,选择msi安装文件(Windows Installer)进行下载。 2.安装NodeJS 下载完成后,双击msi安装文件,按照提示完成安装。在安装过…

    node js 2023年6月8日
    00
  • node将geojson转shp返回给前端的实现方法

    要实现“node将geojson转shp返回给前端”的功能,可以采用以下步骤: 安装相关依赖 在Node.js中,我们可以使用geojson2shp库将GeoJSON文件转换为Shapefile文件。首先需要在命令行中安装该库,命令如下: npm install geojson2shp –save 创建服务器 使用Node.js创建一个简单的服务器,监听前…

    node js 2023年6月8日
    00
  • 使用ngrok+express解决本地环境中微信接口调试问题

    下面是使用ngrok+express解决本地环境中微信接口调试问题的完整攻略: 1. 什么是ngrok ngrok是一款基于Go语言开发的反向代理应用程序,可以将本地服务映射到公网访问地址,支持http、https、tcp等多种协议。即使是在家里或者公司网络环境下,使用ngrok也可以让外部计算机通过Internet访问本地的应用程序。 2. 安装和配置ng…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部