nestjs-websocket 实现简单的聊天室
https://www.passerma.com/chat/
代码地址 https://github.com/passerma/nestjs-websocket
websocket部分代码如下
import { OnGatewayConnection, OnGatewayInit, SubscribeMessage, WebSocketGateway, OnGatewayDisconnect, WebSocketServer } from '@nestjs/websockets'; import { Server, Socket } from 'socket.io'; import { Logger } from '@nestjs/common'; @WebSocketGateway({ path: '/socket', allowEIO3: true, cors: { origin: /.*/, credentials: true } }) export class AppGateway implements OnGatewayInit, OnGatewayConnection, OnGatewayDisconnect { private logger: Logger = new Logger('ChatGateway'); @WebSocketServer() private ws: Server; // socket实例 private connectCounts = 0 // 当前在线人数 private allNum = 0 // 全部在线人数 private users: any = {} // 人数信息 /** * 初始化 */ afterInit() { this.logger.log('websocket init ...'); } /** * 链接成功 */ handleConnection(client: Socket) { this.connectCounts += 1 this.allNum += 1 this.users[client.id] = `user-${this.connectCounts}` this.ws.emit('enter', { name: this.users[client.id], allNum: this.allNum, connectCounts: this.connectCounts }); client.emit('enterName', this.users[client.id]); } /** * 断开链接 */ handleDisconnect(client: Socket) { this.allNum -= 1 this.ws.emit('leave', { name: this.users[client.id], allNum: this.allNum, connectCounts: this.connectCounts }); } @SubscribeMessage('message') /** * 监听发送消息 */ handleMessage(client: Socket, data: any): void { this.ws.emit('message', { name: this.users[client.id], say: data }); } @SubscribeMessage('name') /** * 监听修改名称 */ handleName(client: Socket, data: any): void { this.users[client.id] = data client.emit('name', this.users[client.id]); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现