小程序WebSocket一对一聊天(可离线消息)
Gitee地址https://gitee.com/hxl495/applets-example/tree/master/wechat项目截图运行项目1.准备好AppID和AppSecret(小程序密钥)。导入并配置小程序项目目录下SpringBoot-Server目录不属于小程序部分,属于后端,无需导入。接下来打开app.js,配置服务器IP地址,如果在Tomact下部署,需要增加项目名。配置后端
Gitee地址
https://gitee.com/hxl495/applets-example/tree/master/wechat
项目截图
运行项目
1.准备好AppID和AppSecret(小程序密钥)。
-
导入并配置小程序
项目目录下SpringBoot-Server目录不属于小程序部分,属于后端,无需导入。接下来打开app.js,配置服务器IP地址,如果在Tomact下部署,需要增加项目名。
-
配置后端
进入SpringBoot-Server\wechat\src\main\resources目录,修改application.properties文件,配置Redis地址、端口,AppId、secret。
后端由于需要存储用户数据,所以使用了Redis。
-
启动Redis
下载Redis后双击Redis-x64-3.2.100/redis-server.exe即可,Linux下执行./redis-server。
-
打包War
cmd进入SpringBoot-Server\wechat下,执行mvn package进行打包,前提需要安装上maven,如果没有安装,则需要下载并配置环境变量,安装好记得配置阿里云镜像,不然下载jar时候会非常慢。
将target/wechat-0.0.1-SNAPSHOT.war复制到Tomcat目录下webapps下,并启动Tomcat。
运行原理
主要使用WebSocket来实现,整体通信步骤较简单,步骤如下。
- 小程序用户信息授权。
- 授权后进行登录,向后端传入临时登录凭证,用来获取OpenId。
- 后端根据临时登录凭证获取OpenId,并存储到Redis,之后返回给小程序。
- 小程序登录后通过WebSocket连接服务器,传入第三步返回的OpenId。
- 后端将他的session存放到ConcurrentHashMap中,并把上线状态置为true。
- 判断是否有此用户的离线消息,如果有,则构建成一个数组发送给此用户。
- 广播消息,告诉其他用户,我上线了。
- 小程序收到广播后,刷新用户列表。
- 后端从Redis取出所有的用户,并在目前在线列表中获取对应状态,修改并返回给小程序。
发送消息流程
- 判断是否登录、WebSocket是否连接,未连接未登录则进行登录、连接。
- 构建消息body,包含fromId和toId,通过webSocket发送到后端。
- 后端解析数据,判断toId用户是否在线,不在线则将消息存放到离线消息集合中。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)