第44节 OpenIM first meeting source code
❤️💕💕记录sealos开源项目的学习过程。k8s,docker和云原生的学习。Myblog:http://nsddd.top
[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 对外提供的 APIopen_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
: 测试 v2wasm
: WebAssembly 相关实现work_group_test
: 工作群测试ws_wrapper
: WebSocket 包装器
open_im_sdk
这里面都是全部对外的 sdk
open_im_sdk
这里面都是一些回调接口,也是对外导出,移动端实现这些接口。
Go语言调用 callback 先上一次 UI 层处理。
cache
这是一个Go语言程序中的一个结构体类型Cache
,它包含了一些方法来更新和查询缓存中的数据。下面解释每个方法的功能:
NewCache(user *user.User, friend *friend.Friend) *Cache
:这个方法用于创建一个新的Cache
对象,它需要两个参数user
和friend
,这两个参数分别是对用户和好友的操作的接口。Update(userID, faceURL, nickname string)
:这个方法用于更新缓存中指定用户ID的用户信息,包括用户的昵称和头像URL。UpdateConversation(conversation model_struct.LocalConversation)
:这个方法用于更新缓存中指定会话ID的会话信息。UpdateConversations(conversations []*model_struct.LocalConversation)
:这个方法用于批量更新缓存中多个会话的信息。GetAllConversations() []*model_struct.LocalConversation
:这个方法用于获取缓存中所有会话的信息。GetAllHasUnreadMessageConversations() []*model_struct.LocalConversation
:这个方法用于获取缓存中所有有未读消息的会话的信息。GetConversation(conversationID string) model_struct.LocalConversation
:这个方法用于获取缓存中指定会话ID的会话信息。GetUserNameAndFaceURL(ctx context.Context, userID string) (faceURL, name string, err error)
:这个方法用于获取指定用户ID的用户昵称和头像URL。它首先从缓存中查找,如果缓存中没有则从本地数据库中查找,如果还没有则从服务器数据库中查找。如果最终没有找到,则返回一个错误。
除了Cache
类型中的方法,这段代码还定义了一个UserInfo
类型,用于缓存用户的昵称和头像URL。
END 链接
✴️版权声明 © :本书所有内容遵循CC-BY-SA 3.0协议(署名-相同方式共享)©