jxnu-liguobin / Sim

Scala、Spring Boot、Akka HTTP 实现的LayIM
Apache License 2.0
9 stars 1 forks source link
akka-actors akka-http layim mybatis redis scala spring-boot websocket

Scala CI with Gradle

在线测试地址 http://im.dreamylost.cn 该预览已经是zio实现的zim

在线API文档 swagger-ui

敬请关注进阶版:https://github.com/bitlap/zim 基于scala、zio、tapir、circe、akka-http、scalikejdbc、redis实现的纯异步、函数式、流式API的LayIM。

技术栈

项目结构

Sim
├─ gradle                                                 - 本项目gradle使用6.5.1,高版本有bug,编译不了
├─ .gitattributes                                         - Git仓库显示语言的配置
├─ .gitignore                                             - Git忽略文件的配置
├─ .scalafmt.conf                                         - Scala代码格式化的配置
├─ README.md
├─ build.gradle
├─ deploy.sh                                              - 部署脚本
├─ settings.gradle
└─ src
       ├─ main
       │    ├─ resources
       │    │    ├─ application.conf                      - Websocket配置:基于Akka实现
       │    │    ├─ application.properties                - Springboot程序配置
       │    │    ├─ data.sql                              - 初始化数据
       │    │    ├─ favicon.ico
       │    │    ├─ layim.png
       │    │    ├─ mapper                                - mybatis mapper文件
       │    │    └─ schema.sql                            - 初始化表结构
       │    ├─ scala
       │    │    └─ io.github.dreamylost                  - 代码实现   
       │    │    └─ io.github.dreamylost.websocket        - websocket代码实现
       │    └─ webapp
       │           ├─ WEB-INF                             - 聊天记录和背景页
       │           ├─ index.html                          - 首页  
       │           └─ static                              - 静态资源文件
       └─ test

本地调试

配置Mysql数据库,Redis以及邮件服务器,如果不需要邮件相关服务,可以在UserService.scala中注释掉相关的代码

  1. 创建MySQL库 websocket
  2. schema.sqldata.sql文件从resources/sql/目录移动到resources/,初始化表结构和数据,如需要自己mock数据,参考 RandomData.scala 构造
  3. 查看application.confapplication.properties配置
  4. 启动 Application.scala
  5. 访问 http://localhost:8080
  6. 登录

选取t_user表中的任意一条数据,如:

注意:

  1. 使用环境参数spring.profiles.active=dev,拷贝一份配置命名为application-dev.properties,修改数据库信息
  2. 修改model类后需要清理build目录的class文件
  3. 数据库每次启动自动格式化,不需要格式化就删掉resources下的schema.sqldata.sql

觉得OK点个赞即可,有问题可以创建issue。

部署

# 在Sim目录执行
bash deploy.sh 1.3.0 # 1.3.0表示最新版本号

TODO zim将完成下面工作