Nest.js WebSocket

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>

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

时间: 2024-10-10 10:23:14

Nest.js WebSocket的相关文章

node.js Websocket消息推送---GoEasy

Goeasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送!个人感觉goeasy推送更稳定,推送速度快,代码简单易懂上手快浏览器兼容性:GoEasy推送支持websocket 和polling两种连接方式,从而可以支持IE6及其以上的所有版本,同时还支持其它浏览器诸如Firefox, Chrome, Safari 等等.支 持不同的开发语言:   GoEasy推送提供了Restful API接口,无论你的后台程序用的是哪种语言都可以通过RestfulAPI来实现后台实时推送.

node.js Websocket实现扫码二维码登录---GoEasy

最近在做一个扫码登录功能,为此我还在网上搜了一下关于微信的扫描登录的实现方式.当这个功能完成了后,我决定将整个实现思路整理出来,方便自己以后查看也方便其他有类似需求的程序猿些. 要实现扫码登录我们需要解决两个问题: 1.  在没有输入用户名及密码的情况下,如何解决权限安全问题?换句话讲,如何让服务器知道扫码二维码的客户端是一个合法的用户? 2.  服务器根据用户在客户端的选择如何实时在网页上作出相应的响应? 首先我们先理一下微信的实现思路,来方便我们理解解决这一难题的思路方向.微信登录的二维码实

js websocket客户端连接docker容器失败 failed: Connection closed before receiving a handshake response

先说说我的情况 我是在docker容器里面跑的websocket服务器端 在本地的浏览器用js websocket访问 docker端口也都映射了 就是连接失败 把服务器端的监听地址从127.0.0.1改成0.0.0.0就可以了 就是这样... 原文地址:https://www.cnblogs.com/wzg123/p/8535206.html

Node.js+websocket+mongodb实现即时聊天室

ChatRoom Node.js+websocket+mongodb实现即时聊天室 A,nodejs简介:Node.js是一个可以让javascript运行在服务器端的平台,它可以让javascript脱离浏览器的束缚运行在一般的服务器下面,你可以用Node.js轻松地进行服务器端应用的开发.Node.js是一个为实时Web应用开发而诞生的平台,它充分考虑了在实时响应和超大规模数据下架构的可扩展性,这使得它摒弃了传统的平台依靠多线程来实现高并发的的设计思路,而采用了单线程,异步式I/O和事件驱动

[Next] Next.js+Nest.js实现GitHub第三方登录

GitHub OAuth 第三方登录 第三方登录的关键知识点就是 OAuth2.0 . 第三方登录,实质就是 OAuth 授权 . OAuth 是一个开放标准,允许用户让第三方应用访问某一个网站的资源,而不需要提供账号和密码. 总体就是:myapp <===> user <===> github 授权的总体流程 用户进入到我的网站,我想要获取到用户的 GitHub 信息 跳转到 GitHub 授权页面,然后问用户是否允许我获得他的信息,授予权限 同意,我的网站会获得 GitHub

Node.js Websocket 区分不同的用户

实现ws://serverIP:port/:param1/:param2 .通过param1,param2来管理不同的ws回话,以便实现群发和指定用户的消息推送 npm install ws --save node server.js server.js var webSocketServer = new (require('ws')).Server({port: (process.env.PORT || 5000)}), webSockets = {} // userID: webSocket

Node.js websocket 使用 socket.io库实现实时聊天室

认识websocket WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duple).一开始的握手需要借助HTTP请求完成. 其实websocket 并不是很依赖Http协议,它也拥有自己的一套协议机制,但在这里我们需要利用的socket.io 需要依赖到http . 之前用java jsp写过一个聊天,其实实现逻辑并不难,只是大部分时间都用在UI的设计上,其实现原理就是一个基于websocket的通信,要想做一个好的聊天室,我觉得大部

nest.js + typeORM:基本使用

前言 nest是一款兼容typescript和javascript的node.js框架.本文使用nest的一些基本模块,来搭建一个简单的web后端CURD应用程序.typeORM是一款比较成熟的对象关系映射器,它是由typescript写的.nest和typeORM的具体介绍,可以查看官方文档. 项目搭建 使用CLI搭建project: npm i -g @nestjs/cli nest new nest-app 这样就创建了一个nest-app项目,创建完成后,在src文件夹中包含以下几个核心

Node.js WebSocket 客户端实例

Node.js var ws = require("ws"); var socket = new ws("ws://127.0.0.1:8001); var socket.on("open", function () { if (socket.readyState == 1) { var msg = {}; msg.status = 'ok'; socket.send(JSON.stringify(msg)); } }); var socket.on(&q