开源项目|使用go语言搭建高效的环信 IM Rest接口(附源码)

项目背景

环信 Server SDK 是对环信 IM REST API 的封装, 可以节省服务器端开发者对接环信 API 的时间,只需要配置自己的 App Key 相关信息即可使用。

环信目前提供java和PHP版本的Server SDK,此项目使用go语言对环信 IM REST API 进行封装,对官方版本进行了补充,有需要的开发者可以直接通过以下地址获取源码。

项目地址

  • https://github.com/xiaofengin/easemob-go
  • 如果有任何问题可以通过 issue 的形式反馈,作者会积极更新该仓库

前提条件

  • go语言环境

  • 有效的环信即时通讯 IM 开发者账号和 AppKey、ClientID、ClientSecret、DomainURL
    登录 环信管理后台 到“应用列表” → 点击“查看”即可获取到 App Key、Client ID、ClientSecret,到"即时通讯" → 点击"服务概览"获取到 “Rest api” 的服务器域名。

实现方法

  • go.mod 文件引入: github.com/xiaofengin/easemob-go

AppKey、ClientID、ClientSecret在下图中获取

在这里插入图片描述

DomainURL在下图中获取
在这里插入图片描述

初始化IM SDK

package mainimport ("context""fmt"IMSDK "github.com/xiaofengin/easemob-go"
)func main() {client, err := IMSDK.New("appkey","clientId","clientSecret","domainURL")if err != nil {return}
}

批量注册两个用户

package mainimport ("context""fmt"IMSDK "github.com/xiaofengin/easemob-go"
)func main() {client, err := IMSDK.New("appkey","clientId","clientSecret","domainURL")if err != nil {return}user1 := UserRegisterParam{Username: "userID_1",Password: "1",}user2 := UserRegisterParam{Username: "userID_2",Password: "1",}users := []UserRegisterParam{user1, user2}ret, err := client.UserRegister(context.Background(), &users)if err != nil {return}fmt.Printf("数据的值:%v\n", ret.Entities)
}

发送一个单聊消息

  • tos 放接收方环信ID(多个)m := CreateTextMsg("hello word", tos) 创建一个消息体
  • 默认发送方ID 是 admin,如果要修改的话 m.From = "指定ID"
  • 也可以给消息添加扩展字段 m.Ext = map[string]interface{}{"key1": "value1", "key2": "value2"}
package mainimport ("context""fmt"IMSDK "github.com/xiaofengin/easemob-go"
)func main() {client, err := IMSDK.New("appkey","clientId","clientSecret","domainURL")if err != nil {return}var tos []stringtos = append(tos, "环信用户ID")m := CreateTextMsg("hello word", tos)//m.From = "指定ID"//m.Ext = map[string]interface{}{"key1": "value1", "key2": "value2"}ret, err := client.SendChatMessage(context.Background(), m)if err != nil {return}fmt.Printf("数据的值:%v\n", ret.Data)
}

获取用户token

  • 通过用户ID和密码获取用户token,也可以通过用户ID获取用户token
package mainimport ("context""fmt"IMSDK "github.com/xiaofengin/easemob-go"
)func main() {client, err := IMSDK.New("appkey","clientId","clientSecret","domainURL")if err != nil {return}//通过用户 ID 和密码获取用户 token//data := TokenParam{//	GrantType: "password",//	Username:  "userID",//	Password:  "1",//	Ttl:       "1024000",//}//通过用户 ID 获取用户 tokendata := TokenParam{GrantType:      "inherit",Username:       "userID",AutoCreateUser: true,Ttl:            "1024000",}ret, err := client.GetUserToken(context.Background(), &data)if err != nil {return}fmt.Printf("数据的值:%v\n", ret.AccessToken)
}

SDK功能清单

功能地址
user 用户信息模块https://github.com/xiaofengin/easemob-go/blob/main/user_test.go
push 推送信息模块https://github.com/xiaofengin/easemob-go/blob/main/push_test.go
message 消息模块https://github.com/xiaofengin/easemob-go/blob/main/message_test.go
contact 好友模块https://github.com/xiaofengin/easemob-go/blob/main/contact_test.go
chatroom 聊天室模块https://github.com/xiaofengin/easemob-go/blob/main/chatroom_test.go
chatgroup 群组模块https://github.com/xiaofengin/easemob-go/blob/main/chatgroup_test.go

注意

测试代码中 appkey clientId clientSecret 这三个参数我是写到环境变量里面,
如果 你没有把参数写到环境变量里面,可以直接写死该参数

在这里插入图片描述

参考文档:

注册环信IM:https://console.easemob.com/user/register

环信SDK下载:https://www.easemob.com/download/im

GO版本Server SDK: https://github.com/xiaofengin/easemob-go

IMGeek社区支持:https://www.imgeek.net

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/625946.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

plsql developer 一键格式化sql/美化sql

PL/SQL 格式化工具 以 Oracle SQL Developer 为例,使用一键格式化的步骤如下: 打开 Oracle SQL Developer。在“文件”菜单中,选择“打开文件”,然后选择你的 PL/SQL 文件。打开文件后,你可以通过右键菜单选择“格式…

论文解读:(CoCoOP)Conditional Prompt Learning for Vision-Language Models

文章汇总 存在的问题 CoOp的一个关键问题:学习到的上下文不能推广到同一数据集中更广泛的未见类,这表明CoOp过拟合了训练期间观察到的基本类。 动机 为了解决弱泛化问题,我们引入了一个新的概念:条件提示学习。关键思想是使提示取决于每个输入实例(图…

RAG (Retrieval Augmented Generation) 结合 LlamaIndex、Elasticsearch 和 Mistral

作者:Srikanth Manvi 在这篇文章中,我们将讨论如何使用 RAG 技术(检索增强生成)和 Elasticsearch 作为向量数据库来实现问答体验。我们将使用 LlamaIndex 和本地运行的 Mistral LLM。 在开始之前,我们将先了解一些术…

【SpringBoot实战篇】登录认证

🍀🌸明确需求--接口文档--思路分析--开发--测试🌸🍀💕 1 明确需求 2 接口文档 登录 3 思路分析 UserServic、UserMapper在注册的时候已经实现 现在我们重点看UserController 控制器 4 开发(实现&#xff0…

nginx 卸载和安装超详细教程

一、前言 由于现在nginx有版本漏洞,所以很多安装过nginx的需要卸载重新安装,没安装过的,切记不要乱安装版本。 OK以上版本切记不能再用了! 废话不多说,直接上干货。 二、卸载 1、停止Nginx进程 命令行停止&#xf…

鸿蒙语言TypeScript学习第18天:【泛型】

1、TypeScript 泛型 泛型(Generics)是一种编程语言特性,允许在定义函数、类、接口等时使用占位符来表示类型,而不是具体的类型。 泛型是一种在编写可重用、灵活且类型安全的代码时非常有用的功能。 使用泛型的主要目的是为了处…

ubuntu+安装Google Protobuf 库

本文参考文章如下 https://blog.csdn.net/wzw1609119742/article/details/119712422#t18https://blog.csdn.net/j8267643/article/details/134133091https://blog.csdn.net/jax_fanyang/article/details/135937002?spm1001.2014.3001.5502 现在论坛上据大部分的教程都是下面…

树莓派使用总结

手上拿到了一块Raspberry Pi 4B板子。研究一下怎么用。 安装系统 直接到官网【Raspberry Pi 】下载在线安装助手 安装好后,打开软件,选择好板子型号、系统、TF卡,一路下一步就行。 树莓派接口 直接查看官方的资料【Raspberry Pi hardwar…

(C++) 稀疏表Sparse Table

目录 一、介绍 1.1 倍增 1.2 稀疏表ST 二、原理 三、代码实现 3.1 创建稀疏表 3.2 初始化数值 3.3 ST查询 一、介绍 1.1 倍增 倍增的思想是在数据空间特别大的时候,快速进行查找搜索而使用的。例如想要在一个数据量为n的递增数组中查找到等于x的下标&#x…

【6个好玩的linux终端程序】----做一个有趣的IT男

【6个好玩的linux终端程序】----做一个有趣的IT男 一、ASCIIquarium--水族馆二、cmatrix--矩阵代码三、cowsay --会说话的小牛四、sl --火车动画五、fortune--随机名言警句六、bastet-俄罗斯方块 💖The Begin💖点点关注,收藏不迷路&#x1f4…

Jackson 2.x 系列【25】Spring Boot 集成之起步依赖、自动配置

有道无术,术尚可求,有术无道,止于术。 本系列Jackson 版本 2.17.0 本系列Spring Boot 版本 3.2.4 源码地址:https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 1. 前言2. 起步依赖3. 自动配置3.1 JacksonPrope…

数学建模-最优包衣厚度终点判别法-二(K-Means聚类)

💞💞 前言 hello hello~ ,这里是viperrrrrrr~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#xff…