最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 实现实时消息和个人属性设置

    正文概述 掘金(chenfaduo)   2021-04-06   556

    开发前提条件

    - 有效的 开发者账号。

    - 支持 RTM SDK 的主流浏览器:

    下载 SDK

    • 官网下载中心找到 「RTM SDK 下载」 的 Web 端

    • 前往阿里云 OSS ,ctrl + scommand + s 下载

    • 前往 github cloneDownload ZIP 下载

    • 通过 npm 市场下载

    导入 SDK

    • script 标签引入

      使用 <script> 标签引入的 SDK ,window 对象中会暴露一个 ArRTM 的全局变量。

      <script src="/<YOUR_PATH>/to/ArRTM@latest.js"></script>
      
    • ES6 方式引入

      import ArRTM from '/<YOUR_PATH>/to/ArRTM@latest.js';
      
    • CommonJS 方式引入

      var ArRTM = require('/<YOUR_PATH>/to/ArRTM@latest.js');
      
    • npm 方式引入

      import ArRTM from 'ar-rtm-sdk';
      

    初始化rtm实例

    client = await ArRTM.createInstance(APPID);
    

    登录并监听连接状态

    // 登录
    await client.login({ uid });
    // 监听连接状态
    client.on('ConnectionStateChanged', (newState, reason) => {
        if (reason == 'REMOTE_LOGIN') {
            // reason == 'REMOTE_LOGIN' 说明此用户在别处登录
        };
    });
    

    监听点对点消息

    client.on('MessageFromPeer',  (message,  peerId) => {
        // 对方发来的消息
        const content = message.text;
        // 订阅该用户
        client.subscribePeersOnlineStatus([peerId]);
    });
    

    监听远端用户在线状态

    // 订阅状态回调
    client.on('PeersOnlineStatusChanged', (status) => {
        var peerId = null;
        var value = null;
        // status 为一个对象 [key: string]: string
        // key 是用户名,值是状态
        // 'ONLINE' 为在线状态
        for (var key in status) { 
            peerId = key;
            value = status[key];
        };
        // 处理ui变化,不是必须
        oldMsgList.forEach((item, index) => {
            if(item.peerId == peerId){
                item.login_status = value == 'ONLINE'? true : false;
            };
        });
    });
    

    发送消息

    // 要发送的消息
    const message = '你好,我是xxx';
    // 这条消息发送给谁
    const userid = '123456';
    // 配置选项
    const options = {
        enableHistoricalMessaging: true, // 是否启用历史消息
        enableOfflineMessaging: true // 是否启用离线消息
    }
    // 开始发送消息
    client.sendMessageToPeer({text: message}, userid, options).then(() => {
        // 处理代码逻辑
    });
    

    属性设置

    // 属性名
    const key = 'name';
    // 属性值
    const value = '小花猫';
    // 添加属性
    client.addOrUpdateLocalUserAttributes({[key]: value});
    // 修改属性
    var findUser = userSettingList.find(item => item.key == key);
    if(findUser){
        alert('不允许修改键');
        return;
    };
    await client.addOrUpdateLocalUserAttributes({[key]: value});
    // 删除属性
    await client.deleteLocalUserAttributesByKeys(key);
    

    获取用户属性

    // 获取谁的属性
    const userid = '123456';
    // 获取该用户下所有属性
    var AttributesMap = await client.getUserAttributes(userid);
    // 遍历属性
    var AttributesList = [];
    for(var key in AttributesMap){
        AttributesList.push({
            key: key, 
            value: AttributesMap[key], 
        });
    };
    

    登录频道

    // 频道号
    const Channelid = '888888';
    // 创建频道
    const channel = await client.createChannel(Channelid);
    // 加入频道
    await channel.join();
    // 监听频道消息
    channel.on('ChannelMessage', ({ text }, peerId) => { 
        // 消息处理代码逻辑
    });
    

    发送频道消息

    // 要发送的消息
    const message = '你好,我是xxx';
    // 开始发送频道消息
    channel.sendMessage({text: message}).then(() => {
        // 处理代码逻辑
    });
    

    频道属性设置

    // 属性名
    const key = 'name';
    // 属性值
    const value = '小花猫';
    // 添加 / 修改频道属性
    client.addOrUpdateChannelAttributes(Channelid, {[key]: value}).then(() => {
        // 处理逻辑
    });
    

    退出登录

    client.logout();
    

    Demo 体验

    一次体验,胜过无数启迪,轻松成就完美体验 立即体验


    起源地下载网 » 实现实时消息和个人属性设置

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元