功能开启

来源:https://cloud.iocoder.cn/im/build/

进度说明:

IM 即时通讯系统,后端由 yudao-module-im 服务实现,前端由 yudao-ui-admin-vue3im 目录实现。

只需要启动 yudao-module-im 服务,就可以使用 IM 即时通讯功能。步骤如下:

1.1 第一步,导入 SQL

点击 im.sql.zip 下载附件,解压出 SQL 文件,然后导入到数据库中。

友情提示:↑↑↑ im.sql 是可以点击下载的! ↑↑↑

重要说明:该 SQL 仅芋道星球成员可使用和商用,否则视为侵权(索赔 100 万,永久追溯)【下载即视为同意】。

导入后,以 im_ 作为前缀的表,就是 IM 模块的业务表,一共 16 张,按业务模块分为:

子前缀 模块 表数量
im_private_message / im_group_message 消息中心 2
im_friend* 好友关系 2
im_group* 群组管理 3
im_channel* 频道推送 3
im_rtc* 音视频通话 2
im_face* / im_sensitive_word 其他 4

注意:

IM SQL 除了 im_ 业务表,还需要导入菜单、字典、定时任务等初始化数据。否则前端可能出现菜单不可见、字典无法翻译、音视频通话定时清理任务不存在等问题。

1.2 第二步,确认 WebSocket 配置

IM 消息实时推送依赖 WebSocket。你需要先阅读 《WebSocket 实时通信》 文档。

微服务架构下,需要确认 yudao-module-infra-server 已开启 WebSocket,并且 yudao-gateway 已配置 /infra/ws 的 WebSocket 路由。

本地单机体验时,sender-type 使用 local 即可。集群部署时,建议将 sender-type 改成 redisrocketmqkafkarabbitmq,确保多实例之间可以转发 WebSocket 消息。

1.3 第三步,启动服务

① 运行该服务的 ImServerApplication 启动类,看到 "Started ImServerApplication in 5.963 seconds (JVM running for 6.253)" 说明开启成功。

② 然后,访问前端的 [IM 即时通讯] 菜单,确认功能是否生效。右上角的消息窗口,也可以进入聊天界面。如下图所示:

聊天界面 聊天管理
聊天界面 聊天管理

至此,我们就成功开启了 IM 即时通讯的功能 🙂

1.4 第四步,配置音视频通话(可选)

IM 的文字、图片、文件、语音、视频消息不需要额外部署 LiveKit。只有使用「语音通话」「视频通话」「共享屏幕」时,才需要配置 LiveKit。

1.4.1 不使用音视频通话

如果暂时不使用音视频通话,可以在 yudao-module-im 服务的 application-local.yaml 中关闭 RTC:

yudao:
  im:
    rtc:
      enabled: false

关闭后,聊天、好友、群组、频道、表情、敏感词等功能仍可正常使用。

1.4.2 使用音视频通话

如果需要使用音视频通话,操作如下:

① 本地开发时,可以参考 script/livekit-poc/docker-compose.yml 启动 LiveKit Server:

cd script/livekit-poc
docker compose up -d

你也可以参考 livekit/livekit 部署 LiveKit Server。

② 修改 yudao-module-im 服务的 application-local.yaml 配置:

yudao:
  im:
    rtc:
      enabled: true
      livekit-url: ws://127.0.0.1:7880
      api-key: devkey
      api-secret: secret-poc-key-min-32-chars-required-here

生产环境请将 livekit-url 改成可被浏览器访问的 wss:// 地址,并将 api-keyapi-secret 改成 LiveKit Server 的真实配置。

③ 配置 LiveKit Webhook 回调地址:

http://后端地址/admin-api/im/livekit/webhook