第44节 OpenIM first meeting source code


❤️💕💕记录sealosopen in new window开源项目的学习过程。k8s,docker和云原生的学习open in new window。Myblog:http://nsddd.topopen in new window


[TOC]

目录结构

❯ tree Open-IM-SDK-Core -L 2
Open-IM-SDK-Core
├── LICENSE
├── Makefile
├── README.md
├── go.mod
├── go.sum
├── internal
│   ├── business
│   ├── cache
│   ├── common
│   ├── conversation_msg
│   ├── file
│   ├── friend
│   ├── full
│   ├── group
│   ├── heartbeart
│   ├── interaction
│   ├── login
│   ├── obj_storage
│   ├── signaling
│   ├── super_group
│   ├── user
│   ├── util
│   └── work_moments
├── main
│   ├── gordon_main.go
│   ├── main.go
│   ├── online_open_im.go
│   ├── press_open_im.go
│   ├── reliability_open_im.go
│   └── sk_main.go
├── open_im_sdk
│   ├── conversation_msg.go
│   ├── friend.go
│   ├── group.go
│   ├── init_login.go
│   ├── listener.go
│   ├── signaling.go
│   ├── signaling_listener.go
│   ├── third.go
│   ├── user.go
│   ├── userRelated.go
│   ├── util.go
│   └── workmoments.go
├── open_im_sdk_callback
│   ├── callback.go
│   ├── for_service.go
│   └── signaling_callback.go
├── pkg
│   ├── common
│   ├── constant
│   ├── db
│   ├── log
│   ├── network
│   ├── sdk_params_callback
│   ├── server_api_params
│   ├── syncer
│   └── utils
├── sdk_struct
│   └── sdk_struct.go
├── single_test
│   ├── msg_delay_open_im.go
│   ├── online_open_im.go
│   └── press_open_im.go
├── test
│   ├── Makefile
│   ├── account.go
│   ├── config.go
│   ├── login.go
│   ├── online.go
│   ├── reliability.go
│   ├── sendMessage.go
│   ├── t_conversation_msg.go
│   ├── t_friend_sdk.go
│   ├── t_group_sdk.go
│   ├── t_signaling.go
│   ├── work_group_create.go
│   └── work_moments.go
├── testv2
│   ├── callback.go
│   ├── config.go
│   ├── conversation_test.go
│   ├── create_msg_test.go
│   ├── file_test.go
│   ├── friend_test.go
│   ├── group_test.go
│   ├── init.go
│   ├── listener.go
│   ├── signaling_test.go
│   ├── test.png
│   ├── user_test.go
│   └── work_moment_test.go
├── wasm
│   ├── cmd
│   ├── event_listener
│   ├── indexdb
│   └── wasm_wrapper
├── work_group_test
│   ├── create_work_group_open_im.go
│   ├── msg_delay_open_im.go
│   └── press_open_im.go
└── ws_wrapper
    ├── cmd
    ├── test
    ├── utils
    └── ws_local_server
  • Open-IM-SDK-Core
    

    : Open-IM SDK 核心代码

    • internal
      

      : 内部实现

      • business: 业务处理相关实现
      • cache: 缓存相关实现
      • common: 公用逻辑实现
      • conversation_msg: 消息相关实现
      • file: 文件相关实现
      • friend: 好友相关实现
      • full: 获取好友信息
      • group: 群组相关实现
      • heartbeart: 心跳相关实现,长连接
      • interaction: 交互相关实现
      • login: 登录相关实现
      • obj_storage: 对象存储相关实现
      • signaling: 信令相关实现
      • super_group: 超级群相关实现(tg 群,有一个管道)
      • user: 用户相关实现
      • util: 工具函数
      • work_moments: 工作圈相关实现
    • main: 主函数

    • open_im_sdk: Open-IM SDK 对外提供的 API

    • open_im_sdk_callback: Open-IM SDK 回调函数相关实现

    • pkg
      

      : 包

      • common: 公共逻辑实现
      • constant: 常量定义
      • db: 数据库相关实现
      • log: 日志相关实现
      • network: 网络相关实现
      • sdk_params_callback: SDK 参数回调相关实现
      • server_api_params: 服务端 API 参数相关实现
      • syncer: 同步相关实现
      • utils: 工具函数
    • sdk_struct: SDK 结构体定义

    • single_test: 单元测试

    • test: 测试

    • testv2: 测试 v2

    • wasm: WebAssembly 相关实现

    • work_group_test: 工作群测试

    • ws_wrapper: WebSocket 包装器

open_im_sdk

这里面都是全部对外的 sdk

open_im_sdk

这里面都是一些回调接口,也是对外导出,移动端实现这些接口。

Go语言调用 callback 先上一次 UI 层处理。

cache

这是一个Go语言程序中的一个结构体类型Cache,它包含了一些方法来更新和查询缓存中的数据。下面解释每个方法的功能:

  1. NewCache(user *user.User, friend *friend.Friend) *Cache:这个方法用于创建一个新的Cache对象,它需要两个参数userfriend,这两个参数分别是对用户和好友的操作的接口。
  2. Update(userID, faceURL, nickname string):这个方法用于更新缓存中指定用户ID的用户信息,包括用户的昵称和头像URL。
  3. UpdateConversation(conversation model_struct.LocalConversation):这个方法用于更新缓存中指定会话ID的会话信息。
  4. UpdateConversations(conversations []*model_struct.LocalConversation):这个方法用于批量更新缓存中多个会话的信息。
  5. GetAllConversations() []*model_struct.LocalConversation:这个方法用于获取缓存中所有会话的信息。
  6. GetAllHasUnreadMessageConversations() []*model_struct.LocalConversation:这个方法用于获取缓存中所有有未读消息的会话的信息。
  7. GetConversation(conversationID string) model_struct.LocalConversation:这个方法用于获取缓存中指定会话ID的会话信息。
  8. GetUserNameAndFaceURL(ctx context.Context, userID string) (faceURL, name string, err error):这个方法用于获取指定用户ID的用户昵称和头像URL。它首先从缓存中查找,如果缓存中没有则从本地数据库中查找,如果还没有则从服务器数据库中查找。如果最终没有找到,则返回一个错误。

除了Cache类型中的方法,这段代码还定义了一个UserInfo类型,用于缓存用户的昵称和头像URL。

END 链接