身份验证是大多数现有应用程序的重要组成部分,有许多不同的方法,策略来实现用户的登录认证,nodejs 中认证用的比较多的是 passport, 该文章就来介绍一下采用 Nest 集成 passport 实现一个简单的 jwt 认证程序 (依然采用之前的 nest 项目). # 安装 passport 及其他必要的库 h $ yarn add @nestjs/passport passport passport-local @nestjs/jwt passport-jwt$ yarn add -D @types/passport-local @types/passport-jwt#...

上一篇文章介绍了 Nest 集成 socket.io 和 redis 适配器,不过只适用于在服务器进行部署,如果我们想部署到 serverless 平台上,那么还需要使用 API 网关来代理 ws 协议,这篇就来测试用腾讯云 API 网关来代理 ws 协议与部署到 serverless 的 nest 程序进行通信. # 创建 API 网关 一般来说,我们部署一个新的 serverless 应用时候就自动为我们创建了一个 API 网关. 前面 manager 项目已经为我们创建过一个 API 网关了,我们在其中添加一个 api 路由. 在 管理API - 新建 中,前端类型选择 ws/wss ,...

由于 nodejs 天生只支持单进程,虽然 nodejs 使用非阻塞 异步事件驱动,在单进程下性能足够优秀,但是在用户量多的时候也是不行的 使用 socket.io 默认把用户连接数据保存在内存中的,假如我们的服务器是多核服务器,开了多个进程,或者是多个服务器之间多个进程,那么每个进程间是不存在数据共享的,即在不同的进程下连接的用户是不能够给其它用户发送消息的,同样如果部署在 Serverless 上更是如此 (一个连接一个实例) 所以需要有个适配器解决这一问题,适配器作为一个组件,负责将事件广播到所有或部分客户端. socket.io 提供了以下 4 个适配器供使用 Redis...

# 前言 Redis 是一个开源的内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。 因为是内存数据库,所以大多数情况把它用来做数据缓存服务,得益于它的高性能,目前 Web 应用中普遍都会使用 Redis. 今天就拿之前的 Nest9.0 框架集成一个 Redis 服务,由于 nest 官方没有 Redis 模块,我们只能采用第三方的模块了 一些第三方 Redis 模块都只适配 Nest8 版本,针对 Nest9 版本的目前找到一个比较好的 nestjs-redis-plus 接下来就把它集成到 Nest 框架中吧 # 安装必要的模块 h $ npm install -S...

接上篇博文,如何向 TDMQ 的 Topic 发送信息 我们上次采用了 Pulsar 作为 TDMQ 的消息列队服务,相应地,操作它的就是 pulsar-client 这个库了 由于请求只能在内网中,所以我们只能在云服务器中安装,云服务器是 Centos7.6 的系统 以下是安装记录 # 安装 pulsar-client 官方文档上介绍安装 nodejs 版的 pulsar-client 只需要如下语句 h $ npm install pulsar-client -S执行之后毫无意外的报错了,遂查阅了 N 多资料,最后在 pulsar-client-node github...

# 前言 今天我们来尝试使用腾讯云 Serverless 的事件触发器函数,并且用 Nest 来做云函数执行体. 采用 Serverless 部署项目后,由于用户每次访问才会创建程序响应,响应结束之后又自动销毁 那么如果是像诸如异步队列这类需求,就可以使用事件触发函数. # 创建腾讯云消息队列 TDMQ 腾讯云 Serverless 目前提供了几种事件触发方式 定时触发 COS 触发 CMQ 主题订阅触发 Ckafkac 触发 API 网关触发 CLS 日志触发 MPS 触发 CLB 触发 TDMQ 消息队列触发 之前我们上传的项目则都是通过用户访问,即 API...

大多数情况下,应用程序是要调用第三方 API 的,这时候就需要用到 http 客户端模块,在前端 Axios 是非常常见的,同样的,在 Nest 框架下也有像 Axios 一样的 http 客户端模块 # 安装 @nestjs/axios 安装也很方便 h $ npm install @nestjs/axios -S# 使用 Http 客户端 安装完成之后,使用起来也很简单,只要在需要用到 http 客户端的模块下导入 HttpModule , 就可以在当前模块下使用 HttpService t// app.modeule.ts@Module({ imports:...

# Nest9.0 系列 - 06 - Nest 集成静态资源服务 所有 Web 开发框架都有静态资源服务,Nest 也不例外,通常静态资源我们可以交给 Nginx 处理,但是本地开发多是采用 web 框架提供 # 首先我们需要安装所需的包 h $ npm install @nestjs/serve-static -S# 修改 app.modeule.ts timport { Module } from '@nestjs/common';import { AppController } from...

Nest 项目目前可以链接云服务的 Mysql 服务 那么如果直接在云服务上部署 Nest 项目链接本地 Mysql 服务理应比 Serverless 性能好才对,遂我们采用 ab 压测一下,看看哪个部署更有性价比 目前有云服务器两台,一台上部署 Nest 项目和 Mysql 服务 (A 服务器), 一台安装 ab 用来测试 (B 服务器), 同时使用 serverless 部署的云函数通过内网链接该云服务器的 Mysql 服务 # 当前环境配置 A 服务器: 1 核 2GB 1Mbps 带宽 Linux Centos7.6 B 服务器: 4 核 4GB 8Mbps 带宽 Linux...