Socket.IO.js客户端连接异常时的内置事件流程

本文介绍了Socket.IO.js客户端在连接异常时的内置事件,详细列举了10种内置事件,并通过官方文档提供了断网等异常状态下的事件处理流程。
摘要由CSDN通过智能技术生成

参考Soket.IO官方文档:https://socket.io/docs/client-api/,客户端内置事件一共有10种,事件如下:

socket.on('connect', function(data){
    //连接正常的事件
    console.log(JSON.stringify(data) + ' - connect');
});
socket.on('connect_error', function(data){
    console.log(JSON.stringify(data)+ ' - connect_error');
});
socket.on('connect_timeout', function(data){
    console.log(JSON.stringify(data)+ ' - connect_timeout');
});
socket.on('error', function(data){
    console.log(JSON.stringify(data) + ' - error');
});
socket.on('disconnect', function(data){
    //失去连接的事件
    console.log(JSON.stringify(data)+ ' - disconnect');
});
socket.on('reconnect', function(data){
    console.log(JSON.stringify(data) + ' - reconnect');
});
socket.on('reconnect_attempt', function(data){
    console.log(JSON.stringify(data)+ 
NestJS 是一个用于构建高效、可靠和可扩展的服务器端应用序的框架。它使用 TypeScript 编写,但也兼容纯 JavaScript。NestJS 内置了对 WebSocket 的支持,并且可以通过集成 socket.io 来管理连接、处理事件和广播消息。 以下是使用 socket.io 在 NestJS 中管理连接、处理事件和广播消息的基本步骤: 1. 安装依赖:首先需要安装 NestJSsocket.io 相关的依赖包。 ```bash npm install @nestjs/websockets @nestjs/platform-express socket.io ``` 2. 创建 WebSocket 模块:使用 NestJS 提供的装饰器和模块创建一个 WebSocket 模块。 ```typescript // socket.module.ts import { Module } from '@nestjs/common'; import { WebsocketsModule } from '@nestjs/websockets'; import { SocketModule } from '@nestjs/platform-express'; @Module({ imports: [ WebsocketsModule.register(), SocketModule, ], }) export class AppModule {} ``` 3. 创建 Socket 守护者(Guard)或拦截器(Interceptor):根据需要,你可能想要创建一个守卫或拦截器来处理验证、授权等逻辑。 ```typescript // socket.guard.ts import { Injectable } from '@nestjs/common'; import { CanActivate, ExecutionContext } from '@nestjs/common'; import { Socket } from 'socket.io'; @Injectable() export class SocketGuard implements CanActivate { canActivate(context: ExecutionContext): boolean { const ctx = context.switchToHttp(); const req = ctx.getRequest<Socket>(); // 在这里添加你的验证逻辑 return true; // 或者根据验证结果返回 false } } ``` 4. 创建 Socket 控制器:创建一个 Socket 控制器来处理客户端事件和发送消息。 ```typescript // socket.controller.ts import { Controller, OnModuleInit, OnModule销毁, EmitEvent, OnEvent, socket } from '@nestjs/websockets'; import { Socket as IoSocket } from 'socket.io'; @Controller('socket') export class SocketController implements OnModuleInit, OnModule销毁 { @OnModuleInit() onModuleInit(client: IoSocket) { // 初始化的操作,例如连接的统计、初始化数据广播等 } @OnModule销毁() onModule销毁(client: IoSocket) { // 模块销毁的操作 } @EmitEvent('userConnected') handleUserConnected(data: any) { // 当客户端触发 userConnected 事件调用 return data; } @OnEvent('connection') handleConnection(client: IoSocket) { // 当客户端连接的操作 } @OnEvent('disconnect') handleDisconnect(client: IoSocket) { // 当客户端断开连接的操作 } } ``` 5. 使用装饰器来注册事件处理器:`@EmitEvent`、`@OnEvent` 等装饰器用于注册对应的事件处理函数。 6. 在主模块中导入 WebSocket 模块:确保你的 WebSocket 模块在主模块中被导入。 ```typescript // app.module.ts import { Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppModule } from './app.module'; import { SocketModule } from './socket.module'; @Module({ imports: [AppModule, SocketModule], controllers: [AppController], }) export class AppModule {} ``` 现在,你的 NestJS 应用已经可以使用 socket.io 来管理连接、处理事件和广播消息了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

非ban必选

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值