美文网首页程序员
小程序轻松实现IM即时通讯多人聊天室

小程序轻松实现IM即时通讯多人聊天室

作者: 即构开发者 | 来源:发表于2022-09-08 08:44 被阅读0次

IM多人聊天室功能简介

ZIM SDK 提供多人房间聊天功能,支持用户向房间内发送文本消息或自定义消息,实现了多人在线交流、同步分享。

多人房间聊天功能可应用于小班课或者会议室等场景,房间成员数量上限请参考 计费说明

IM房间管理功能的前提条件

在实现“房间管理”功能之前,请确保:

实现IM多人聊天流程

用户可以通过以下两种方式,创建房间并进入房间。

  • 方式一:创建房间、加入房间:用户 A 调用 createRoom 接口,传入 ZIMRoomInfo 信息,即可创建并加入房间。其他用户调用 joinRoom 接口,传入由 A 创建的房间 roomID,即可加入房间。
  • 方式二:进入房间:用户 X 调用 enterRoom 接口,传入 ZIMRoomInfo 信息,如果 roomID 不存在,会自动创建一个房间然后进入。其他用户需要调用 enterRoom 接口,传入由 X 创建的房间 roomID,进入房间。

房间内的用户,可以通过 sendRoomMessage 接口,向房间内发送消息,详情请参考 收发房间消息

如果 roomID 已存在:

  • 调用 createRoom 接口,会返回相关错误码,详情请参考 常见错误码
  • 调用 enterRoom 接口,会直接进入此房间内。

如果 roomID 不存在:

  • 调用 createRoom 接口,可以直接创建、并加入到此房间内。
  • 调用 enterRoom 接口,会直接创建一个房间、并进入到此房间内。

创建即时通讯多人聊天房间、加入聊天房间

以下流程中,我们以客户端 A 创建并加入房间,客户端 B 和其他客户端加入房间为例。

下载.png

1. 创建多人聊天房间

客户端 A 登录后,创建一个房间,可以调用 createRoom 接口,传入 ZIMRoomInfo 信息,即可创建并加入房间。同时可以通过错误码 ZIMError 的参数值,判断是否创建成功。相关错误码请查看 常见错误码

  • “roomID”、“roomName” 支持开发者自定义规则生成。建议开发者将 “roomID” 设置为一个有意义的值,可将其与自己的业务账号系统进行关联。
  • 调用 createRoom 接口创建房间后,会直接加入房间,无需再调用 joinRoom 接口加入房间。
var roomInfo = { roomID: '', roomName: '' };
zim.createRoom(roomInfo)
    .then(function ({ roomInfo }) {
        // 操作成功
    })
    .catch(function (err) {
        // 操作失败
    });

2. 加入IM多人聊天房间

客户端 B 和其他客户端先后加入房间,可以调用 joinRoom 接口,传入由 A 创建的房间 roomID,即可加入房间。同时可以通过错误码 ZIMError 的参数值,判断是否创建成功。相关错误码请查看 常见错误码

var roomID = '';
zim.joinRoom(roomID)
    .then(function ({ roomInfo }) {
        // 操作成功
    })
    .catch(function (err) {
        // 操作失败
    });

3. IM聊天房间成员变动通知

当房间有其他成员加入时,将通过 on 的回调接口 roomMemberJoined,向其他已在成员发送消息通知。

例如,当客户端 B 加入由 A 创建的房间时,A 将收到房间内成员变动的通知。

// 加入房间通知,通过该通知收到加入房间的用户信息
zim.on('roomMemberJoined', function (zim, { roomID, memberList }) {
    console.log(roomID, memberList);
});

进入多人聊天房间

以下流程中,我们以客户端 X 创建并进入房间,客户端 Y 和其他客户端直接进入房间为例。

下载2.png
  1. 客户端 X 登录后,调用 enterRoom 接口,传入 ZIMRoomInfo 信息,进入房间;如果传入的 roomID 不存在,将会自动创建一个房间并进入该房间。
  2. 客户端 Y 及其他用户登录后,调用 enterRoom 接口,传入由 X 创建的房间 roomID,直接进入房间。
  3. 房间内的用户,同样可以使用 on 的回调接口 roomMemberJoined 方法,实现对房间内成员加入的监听。
var roomInfo = { roomID: '', roomName: '' };
zim.enterRoom(roomInfo)
    .then(function ({ roomInfo }) {
        // 操作成功
    })
    .catch(function (err) {
        // 操作失败
    });

// 加入房间通知,通过该通知收到加入房间的用户信息
zim.on('roomMemberJoined', function (zim, { roomID, memberList }) {
    console.log(roomID, memberList);
});

离开IM聊天房间

客户端 B 如果想要离开房间,可以调用 leaveRoom 接口,传入房间的 roomID,即可退出此房间;房间内的其他用户可以通过 on 的回调接口 roomMemberLeft,收到成员变动通知。

离开房间后,将不能收到房间内的消息。

下载3.png
var roomID = '';
zim.leaveRoom(roomID)
    .then(function ({ roomID }) {
        // 操作成功
    })
    .catch(function (err) {
        // 操作失败
    });
// 离开房间通知,通过该通知收到离开房间的用户信息
zim.on('roomMemberLeft', function (zim, { roomID, memberList }) {
    console.log(roomID, memberList);
});

当所有成员离开房间后,房间将自动销毁,同时支持设置房间延迟销毁。

相关文章

  • 小程序轻松实现IM即时通讯多人聊天室

    IM多人聊天室功能简介 ZIM SDK 提供多人房间聊天功能,支持用户向房间内发送文本消息或自定义消息,实现了多人...

  • 环信im小程序demo介绍

    介绍 环信小程序demo是基于环信im SDK开发的一款即时通讯的小程序。这个demo可以帮助开发者们更轻松的集成...

  • MFC&Python_QQIM

    QQ即时通讯及聊天室 实现功能:1、客户端可以和服务端进行通讯2、服务端支持多人聊天实现聊天室功能3、界面的友好度...

  • Android-IM从零开始开发一个即时通讯项目

    关于聊天室项目 聊天室项目,也被称为即时通讯(IM)。 其原理是服务器是一直在启动状态的线程,不断的从客户端(Ap...

  • WeChat(微信)与Line(连我)的CIS对比

    即时通讯(Instant messaging,简称IM)是指通过通讯技术来实现两人或多人即时的文字讯息、档案、语音...

  • 即时通讯IM技术领域提高篇

    [TOC] 即时通讯IM技术领域提高篇 即时通讯IM技术领域基础篇 接入层的服务器程序如何升级 对于当前特定Acc...

  • 市场营销之即时通讯营销

    IM营销又叫即时通讯营销(instantmessaging),是企业通过即时工具im推广产品和品牌,以实现目标客户...

  • 即时聊天

    六个免费开源的即时通讯软件源代码 常见即时通讯:网易IM 、腾讯IM、环信IM、融云IM、leancloud IM...

  • 网易信im对接web端!

    概述 最近跟朋友做了一个小程序项目,用到了即时通讯,选择了网易信Im即时通讯,不得不说,网易信的文档写的相当不友好...

  • 区块链社交IM_区块链社交直播平台IM即时通讯系统开发

    区块链社交IM_区块链社交直播平台IM即时通讯系统开发 区块链社交IM轻松开启区块链社交新时代,随时随地聊天、社区...

网友评论

    本文标题:小程序轻松实现IM即时通讯多人聊天室

    本文链接:https://www.haomeiwen.com/subject/gmygnrtx.html