状态码造成微信公众号“该公众号提供的服务出现故障”
bug描述我们使用NestJS写后台代码,给微信公众号提供服务。用户给公众号发消息时,公众号会显示“该公众号提供的服务出现故障”。虽然后台代码可以正常处理业务,但这个提示非常影响用户体验。检查根据微信公众号文档给的提示,出现这个问题的原因是没有给微信服务器返回正确的信息。微信服务器需要的是success或者空的字符串。不能是json格式的字符串。搜了一下其他文章,有的说xml里也不能带有空格;有的说公众号绑定了第三方平台,要去解绑。但这些和我们的情况不一致。给公众号的接口是默认返回success的。查看运行log,发现用户发送1条消息给公众号,我们的服务端会收到4条一模一样的消息。这4条消息的MsgId是一样的。网上也有人提供了防止重复消息的办法。于是尝试以下方法维护一个map,key是MsgId。接收到..
更多NestJS WebSocket 开始使用
使用NestJs提供WebSocket服务。本文会在新建项目的基础上增加2个类Gateway 实现业务逻辑的地方WebSocketAdapter WebSocket适配器新建项目新建一个项目来演示,用npm来管理项目。1nest new websocket-start得到一个有基础功能的工程。进入项目目录,安装2个库1npm i --save @nestjs/websockets @nestjs/platform-socket.io启动使用端口30011await app.listen(3001);npm run start启动我们的工程。用postman测一下,功能ok。gateway介绍Nest里的gateway(网关)只是一个用 @WebSocketGateway() 装饰器注释的类。从技术上讲,网..
更多NestJS 静态文件
为了提供静态资源,我们可以用@nestjs/serve-static包里的ServeStaticModule。服务器上的静态资源,一般指的是文件,比如图片、音频、视频、文本文件或者二进制文件等等。或者是一些单页面应用程序(Single Page Application, SPA)。从服务器上请求得到网页,然后网页再执行自己的业务。安装首先我们需要安装@nestjs/serve-static包。在工程路径下1$ npm install --save @nestjs/serve-static安装完成后,工程的package.json里会多出123"dependencies": { "@nestjs/serve-static": "^2.1.4",}使用在root AppModule中,引入ServeStat..
更多NestJS 部署与维护
我们可以把nestjs的工程传到服务器上,然后直接进行npm操作。也可以在本地打包出nestjs的包,将dist目录传到服务器上。在这里为了方便演示,我们描述的是将工程传到服务器后的操作。传工程文件,可以用github/gitee当作中间桥梁,也可以用vscode的插件传输,或者使用scp命令。同理,dist目录也可以传到github/gitee上,服务器直接使用编译好的文件。直接启动启动前,进入工程目录,先安装一次。1$ npm install用npm run命令启动服务12345# 开发模式$ npm run start# 观察模式$ npm run start:dev在服务器上,运行正式环境(生产环境 production)12345# 启动生产环境前 先start$ npm run start# ..
更多