当前位置: 首页 > 后端技术 > Node.js

快速学习nodejs系列:终极实战篇-基于微信公众号的聊天室

时间:2023-04-03 17:08:55 Node.js

与Nodejs项目介绍1.基于微信公众号的即时聊天室(微信群聊),通过在公众号中回复“聊天”》文本获取系统地址,通过网页授权获取个人信息,通过微信分享传播。2、系统主要有3个页面:创建聊天、聊天记录、聊天页面。3、使用redis数据库存储数据;使用socket.io实现websocket协议;前端页面使用elastic布局4.可以发送文字,图片,语音(使用微信jssdk提供的录音功能),使用ffmpeg将amr转码成mp3;看系统公众号入口:创建聊天,聊天记录:聊天主界面:分享:必备材料1.微信测试公众号2.内网穿透(真实服务器也可以)3.必须提前安装并启动Redis数据库,安装ffmpegservicewebsocket协议websocket协议使服务端和浏览器实现全双工通信(双方可以互相推送消息)。具体的协议细节大家可以在网上搜索研究,这里就不多说了。先说一下,在websocket协议出现之前,我们是如何实现即时通讯的呢?在websocket之前,我是用http来实现伪即时通讯的。1、我们知道http1.1是无状态的,它只会响应客户端的请求;2、我们可以很方便的捕捉浏览器的动作并与服务器进行交互(ajax);但是服务端发生了一个动作,却不可能主动通知客服端。基于以上2点,http并不能轻易实现即时通信,而我们通常使用长轮询或者长连接来实现(非常耗性能或者浪费性能)。长轮询:客户端定时发送http请求,看是否有新消息。长连接:客户端只请求一次,服务端在nodejs中一直连接。我们使用socket.io来实现websocket协议。socket.io官方地址:https://socket.io/;有结合express.js的实现例子。我们项目的使用逻辑:server:connectionevent:监听连接事件disconnecting:abouttodisconnecteventemit():触发事件的方法client:socket.io提供了很多事件和方法,可以去socket.io官网学习。项目代码:目录结构:ffmpeg--ffmpeg程序stattic--根目录audio--语音文件存放目录upload--上传图片目录代码:https://github.com/chenhengji...从github下载源码后,npminstall下载需要的模块,同时下载ffmpeg和redis。启动node-app.js。聊天系统可以在微信上实现。