码迷,mamicode.com
首页 > Web开发 > 详细

Nest.js WebSocket

时间:2018-10-01 13:19:40      阅读:866      评论:0      收藏:0      [点我收藏+]

标签:mes   sub   UNC   socket.io   tga   map   mod   lock   yarn   

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

标签:mes   sub   UNC   socket.io   tga   map   mod   lock   yarn   

原文地址:https://www.cnblogs.com/ajanuw/p/9734517.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!