Docs: https://docs.nestjs.com/websockets/gateways
λ yarn add @nestjs/websockets
λ nest g ga events
events.gateway.js
import { SubscribeMessage, WebSocketGateway, WsResponse, WebSocketServer } from '@nestjs/websockets';import { Observable, of } from 'rxjs';import { map } from 'rxjs/operators'const l = console.log@WebSocketGateway()export class EventsGateway { ?// @WebSocketServer() server; ?@SubscribeMessage('events') ?onEvent(client: any, payload: any): Observable<WsResponse<any>> | any { ???let { name } = payload; ???if (name === 'ajanuw') { ?????return of({ ???????event: 'events', ???????data: { ?????????msg: 'hello ajanuw!' ???????} ?????}) ???} ???if (name === 'alone') { ?????return of('hi', '实打实') ???????.pipe( ?????????map($_ => ???????????({ ?????????????event: 'events', data: { ???????????????msg: $_ ?????????????} ???????????})) ???????); ???} ???return of(payload); ?}}
app.module.ts
import { EventsGateway } from './events/events.gateway'@Module({ ?providers: [EventsGateway],})
客户端
?<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.1.1/socket.io.js"></script> ?<script> ???const l = console.log ???let socket = io('http://localhost:5000'); ???socket.on('connect', function () { ?????console.log('链接成功'); ?????// 发射 ?????socket.emit('events', { ???????name: 'ajanuw' ?????}); ?????// 发射 ?????socket.emit('events', { ???????name: 'alone' ?????}); ?????// 发射 ?????// socket.emit('identity', 0, (response) => console.log('Identity:', response)); ???}); ???????// 监听 ???socket.on('events', (data) => { ?????l(data.msg) ???}); ?</script>
Nest.js ?WebSocket
原文地址:https://www.cnblogs.com/ajanuw/p/9734517.html