【新手必看】服务端集成网易云信IM 即时通讯

本文涉及的产品
.cn 域名,1个 12个月
简介: 【新手必看】服务端集成网易云信IM 即时通讯

了解网易云信 IM

网易云信 IM 即时通讯服务基于网易二十余年的 IM 技术积累,致力于打造最稳定的即时通讯云平台。

IM 即时通讯服务提供了一整套即时通讯基础能力。通过该平台服务就可以将即时通讯、实时网络能力快速集成至企业自身应用中。针对不同场景,网易提供了一系列产品、技术解决方案,包括:客户端 IM 组件、客户端 IM 基础库、全平台 SDK 以及服务端 API 等。利用这些解决方案,企业可以直接在自身的应用中搭建出即时通讯产品,也可以无限创意出自己的即时通讯场景。


通过网易云信 IM SDK,不仅可以快速实现私信、即时聊天、消息通知、游戏对战通讯等常见功能,还能完整打造类似 Discord、微信、子弹短信、易信等的大用户量级社交产品。

集成概述

服务端集成与客户端集成相辅相成,前者实现您的应用服务端与云信 IM 服务端的数据交互,后者实现您的应用客户端与云信 IM 服务端的数据交互。

更新圈组后的IM架构图.png

应用服务端和云信 IM 服务端的数据交互按数据流通方向可分为下表所示的两种类型。

服务端集成类型 相关文档
应用服务端请求云信 IM 服务端 API调用方式
云信 IM 服务端请求应用服务端 第三方回调消息抄送安全通


大部分服务端 API 能够实现和 SDK 接口相同的效果,但部分能力仅可通过服务端 API 实现,如注册云信 IM 账号和创建聊天室。


服务端 API 使用流程

应用服务端请求云信 IM 服务端的操作流程如下。IM 服务端请求应用服务端的相关说明,请参见 第三方回调、 消息抄送和 安全通。

本文以注册云信 IM 账号(user/create.action)这个 API 为例,详细介绍服务端 API 的使用流程。

前提条件

已在云信控制台创建应用,获取 App Key。

已准备好调用和调试服务端 API 的开发环境,如 cURL 和 Postman。

步骤1:确认请求地址(URL)

云信 IM 服务端根据不同的请求地址(URL),区分不同的请求。 因此,您需先到服务端 《API 参考》的相应 API 文档的请求说明中,获取请求地址。


以下为注册云信 IM 账号(user/create.action)的请求地址:

https://api.netease.im/nimserver/user/create.action

该请求地址可分为如下几个部分:

https:指定请求的通信协议。

api.netease.im/nimserver:指定云信 IM 服务端的接入地址。

user/create.action:指定调用的 API。


上述请求地址的域名(api.netease.im)属于国内数据中心域名。如果您的应用主要服务于海外用户,需要将域名设置为海外数据中心域名(api-sg.netease.im),相应的海外接入地址为

https://api-sg.netease.im/nimserver。更多海外数据中心接入相关说明,请参见接入海外数据中心。

步骤2:生成 CheckSum

为保证 API 的安全调用,云信 IM 服务端会对每个 API 的访问请求进行身份验证。您在调用 API 时,都需要在请求中包含 CheckSum 信息。

CheckSum 可通过将本文前提条件获取的 App Secret 结合 Nonce 和 CurTime 这两个参数拼接成字符串后再进行 SHA1 哈希计算来生成,详情请参见 CheckSum计算示例。

步骤3:配置公共请求参数

调用云信 IM 服务端 API 前,需先配置 API 的公共请求参数,即每个 API 都需要使用的请求参数,包括 App Key、Nonce、CurTime 和 CheckSum。公共请求参数需放在请求头(Request Header)中。


参数 说明
App Key 通过云信控制台获取,详见获取 App key
Nonce 随机数(最大长度128个字符)
CurTime 当前 UTC 时间戳,从 1970 年 1 月 1 日 0 时 0 分 0 秒开始到 现在(指发起请求瞬间的前后 5 分钟内)的秒数(类型为 String)
CheckSum 即步骤2:生成 CheckSum中的 CheckSum

步骤4:配置业务参数

配置完公共请求参数后,您需再配置 API 相关的业务参数,明确目标操作。

业务参数的具体介绍,请参见请求参数。

请求参数无论为何类型,调用 API 实际传入时,都需要转为 String 格式,否则将报错。

步骤5:应用服务端发起请求

发起请求

完成以上配置后,您的应用服务端可以通过请求地址,向云信 IM 服务端发起请求。

cURL 请求示例
  curl -X POST -H "AppKey: go9dnk49bkd9jd9vmel1kglw080*****" -H "Nonce: 4tgggergigwow323t23t" -H "CurTime: 1443592222" -H "CheckSum: 9e9db3b6c9abb2e1962cf3e6f7316fcc55583f86" -H "Content-Type: application/x-www-form-urlencoded" -d 'accid=zhangsan&name=zhangsan' 'https://api.netease.im/nimserver/user/create.action'
HttpClient 请求示例(Java)
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class Test {
    public static void main(String[] args) throws Exception{
        DefaultHttpClient httpClient = new DefaultHttpClient();
        String url = "https://api.netease.im/nimserver/user/create.action";
        HttpPost httpPost = new HttpPost(url);

        String appKey = "94kid09c9ig9k1loimjg01******";
        String appSecret = "1234567*****";
        String nonce =  "12345";
        String curTime = String.valueOf((new Date()).getTime() / 1000L);
        String checkSum = CheckSumBuilder.getCheckSum(appSecret, nonce ,curTime);//参考 计算CheckSum的java代码

        // 设置请求的header
        httpPost.addHeader("AppKey", appKey);
        httpPost.addHeader("Nonce", nonce);
        httpPost.addHeader("CurTime", curTime);
        httpPost.addHeader("CheckSum", checkSum);
        httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");

        // 设置请求的参数
        List<NameValuePair> nvps = new ArrayList<NameValuePair>();
        nvps.add(new BasicNameValuePair("accid", "helloworld"));
        httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));

        // 执行请求
        HttpResponse response = httpClient.execute(httpPost);

        // 打印执行结果
        System.out.println(EntityUtils.toString(response.getEntity(), "utf-8"));
    }
}

响应请求

云信 IM 服务端接收到您的请求信息后,返回响应信息。

返回示例如下:

"Content-Type": "application/json; charset=utf-8"
{
  "code":200,
  "info":{"token":"*****","accid":"*****","name":"*****"} 
}

状态码

调用 API 发起请求后,云信 IM 服务端会通过状态码告知您 API 调用结果,如上文返回示例中表示调用成功的"code":200。

如调用不成功,您可根据状态码进行问题排查。具体请参见状态码。

状态码的含义均为开放式,不同接口返回的相同状态码,含义可能略有不同。因此不建议您针对状态码开发业务逻辑。如果对状态码存在依赖,可能存在风险。

常见问题

为什么按照 Boolean 格式传入参数,最终调用 API 失败?

云信 IM 服务端 API 在调用时,请求参数无论为何类型,实际传入时都需转为 String 格式,否则将报错。


以账号全局禁言接口(nimserver/user/mute.action)为例,虽然请求参数 mute 为 Boolean 类型,但在调用接口时,请不要传入"mute":true,而应该传入"mute":“true”,否则将返回错误提示:“mute not boolean”。

目录
相关文章
|
2月前
|
安全 前端开发 关系型数据库
IM即时通讯系统开发技术规则
IM即时通讯系统开发涵盖客户端与服务器端,涉及前端、后端、网络通信及多媒体处理等技术领域,支持文字、语音、图片、视频等多种实时交流方式。开发流程包括需求分析、技术选型、系统设计、开发实现、测试优化及部署维护等阶段,需关注网络通信、多媒体处理、安全性及可扩展性等关键技术点,广泛应用于社交、客服、团队协作及游戏等领域。
|
1月前
|
存储 网络协议 前端开发
基于开源IM即时通讯框架MobileIMSDK:RainbowChat v11.7版已发布
Android端主要更新内容: 1)[优化] 优化了首页“消息”列表中单聊类型未正确同步时的收发消息和点击后的处理逻辑; 2)[优化] 优化了首页“消息”列表中同一好友和陌生人会话不能自动合并的问题;
54 2
|
25天前
|
移动开发 网络协议 小程序
基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v9.1版已发布
RainbowChat是一套基于开源IM聊天框架 MobileIMSDK 的产品级移动端IM系统。RainbowChat源于真实运营的产品,解决了大量的屏幕适配、细节优化、机器兼容问题
55 5
|
2月前
|
移动开发 前端开发 JavaScript
开源即时通讯IM框架MobileIMSDK的H5端技术概览
开源即时通讯IM框架MobileIMSDK的H5端技术概览
61 2
开源即时通讯IM框架MobileIMSDK的H5端技术概览
|
3月前
|
编解码 NoSQL Redis
(十一)Netty实战篇:基于Netty框架打造一款高性能的IM即时通讯程序
关于Netty网络框架的内容,前面已经讲了两个章节,但总归来说难以真正掌握,毕竟只是对其中一个个组件进行讲解,很难让诸位将其串起来形成一条线,所以本章中则会结合实战案例,对Netty进行更深层次的学习与掌握,实战案例也并不难,一个非常朴素的IM聊天程序。
|
3月前
|
前端开发 网络协议
Netty实战巅峰:从零构建高性能IM即时通讯系统,解锁并发通信新境界
【8月更文挑战第3天】Netty是一款高性能、异步事件驱动的网络框架,适用于开发高并发网络应用,如即时通讯(IM)系统。本文将指导你利用Netty从零构建高性能IM程序,介绍Netty基础及服务器/客户端设计。服务器端使用`ServerBootstrap`启动,客户端通过`Bootstrap`连接服务器。示例展示了简单的服务器启动过程。通过深入学习,可进一步实现用户认证等功能,打造出更完善的IM系统。
151 1
|
4月前
|
开发工具 开发者
【使用必读】服务端集成网易云信IM 即时通讯-回调说明篇(二)
【使用必读】服务端集成网易云信IM 即时通讯-回调说明篇(二)
73 0
|
1月前
|
存储 自然语言处理 机器人
实战揭秘:当RAG遇上企业客服系统——从案例出发剖析Retrieval-Augmented Generation技术的真实表现与应用局限,带你深入了解背后的技术细节与解决方案
【10月更文挑战第3天】随着自然语言处理技术的进步,结合检索与生成能力的RAG技术被广泛应用于多个领域,通过访问外部知识源提升生成内容的准确性和上下文一致性。本文通过具体案例探讨RAG技术的优势与局限,并提供实用建议。例如,一家初创公司利用LangChain框架搭建基于RAG的聊天机器人,以自动化FAQ系统减轻客服团队工作负担。尽管该系统在处理简单问题时表现出色,但在面对复杂或多步骤问题时存在局限。此外,RAG系统的性能高度依赖于训练数据的质量和范围。因此,企业在采用RAG技术时需综合评估需求和技术局限性,合理规划技术栈,并辅以必要的人工干预和监督机制。
93 3
|
3月前
|
数据采集 监控 测试技术
大型IM稳定性监测实践:手Q客户端性能防劣化系统的建设之路
本文以iOS端为例,详细分享了手 Q 客户端性能防劣化系统从0到1的构建之路,相信对业界和IM开发者们都有较高的借鉴意义。
129 2
|
1月前
|
人工智能 自然语言处理 搜索推荐
AI技术在智能客服系统中的应用与挑战
【9月更文挑战第32天】本文将探讨AI技术在智能客服系统中的应用及其面临的挑战。我们将分析AI技术如何改变传统客服模式,提高服务质量和效率,并讨论在实际应用中可能遇到的问题和解决方案。
232 65

热门文章

最新文章