微信小程序实现聊天室功能


Posted in Javascript onJune 14, 2021

本文通过实例为大家分享了微信小程序实现聊天室的具体代码,供大家参考,具体内容如下

1.实现效果展示

微信小程序实现聊天室功能

2.room.wxml

<view class="container" style="{{containerStyle}}">
  <chatroom
    style="width: 100%; height: 100%"
    envId="{{chatRoomEnvId}}"
    collection="{{chatRoomCollection}}"
    groupId="{{chatRoomGroupId}}"
    groupName="{{chatRoomGroupName}}"
    userInfo="{{userInfo}}"
    onGetUserInfo="{{onGetUserInfo}}"
    getOpenID="{{getOpenID}}"
  ></chatroom>
</view>

3.room.js

const app = getApp()

Page({
  data: {
    avatarUrl: './user-unlogin.png',
    userInfo: null,
    logged: false,
    takeSession: false,
    requestResult: '',
    // chatRoomEnvId: 'release-f8415a',
    chatRoomCollection: 'chatroom',
    chatRoomGroupId: 'demo',
    chatRoomGroupName: '聊天室',

    // functions for used in chatroom components
    onGetUserInfo: null,
    getOpenID: null,
  },

  onLoad: function() {
    // 获取用户信息
    wx.getSetting({
      success: res => {
        if (res.authSetting['scope.userInfo']) {
          // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
          wx.getUserInfo({
            success: res => {
              this.setData({
                avatarUrl: res.userInfo.avatarUrl,
                userInfo: res.userInfo
              })
            }
          })
        }
      }
    })

    this.setData({
      onGetUserInfo: this.onGetUserInfo,
      getOpenID: this.getOpenID,
    })

    wx.getSystemInfo({
      success: res => {
        console.log('system info', res)
        if (res.safeArea) {
          const { top, bottom } = res.safeArea
          this.setData({
            containerStyle: `padding-top: ${(/ios/i.test(res.system) ? 10 : 20) + top}px; padding-bottom: ${20 + res.windowHeight - bottom}px`,
          })
        }
      },
    })
  },

  getOpenID: async function() {
    if (this.openid) {
      return this.openid
    }

    const { result } = await wx.cloud.callFunction({
      name: 'login',
    })

    return result.openid
  },

  onGetUserInfo: function(e) {
    if (!this.logged && e.detail.userInfo) {
      this.setData({
        logged: true,
        avatarUrl: e.detail.userInfo.avatarUrl,
        userInfo: e.detail.userInfo
      })
    }
  },

  onShareAppMessage() {
    return {
      title: '即时通信 Demo',
      path: '/pages/im/room/room',
    }
  },
})

 

4.room.json

{
  "usingComponents": {
    "chatroom": "/components/chatroom/chatroom"
  }
}

5.room.wxss

.container {
  height: 100%;
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  padding-top: 80rpx;
  padding-bottom: 30rpx;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
如何实现iframe(嵌入式帧)的自适应高度
Jul 26 Javascript
JS实现下拉框的动态添加(附效果)
Apr 03 Javascript
纯js实现瀑布流展现照片(自动适应窗口大小)
Apr 08 Javascript
JavaScript的9种继承实现方式归纳
May 18 Javascript
javascript实现动态表头及表列的展现方法
Jul 14 Javascript
window.location.reload 刷新使用分析(去对话框)
Nov 11 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
Dec 30 Javascript
AngularJS指令用法详解
Nov 02 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
Nov 18 Javascript
React 使用recharts实现散点地图的示例代码
Dec 07 Javascript
jQuery实现提交表单时不提交隐藏div中input的方法
Oct 08 jQuery
JavaScript数组去重实现方法小结
Jan 17 Javascript
小程序实现文字循环滚动动画
React 高阶组件HOC用法归纳
Jun 13 #Javascript
React forwardRef的使用方法及注意点
原生Javascript+HTML5一步步实现拖拽排序
JS代码编译器Monaco使用方法
React中的Context应用场景分析
Jun 11 #Javascript
详解JVM系列之内存模型
You might like
php将时间差转换为字符串提示
2011/09/07 PHP
PHP正则表达式之定界符和原子介绍
2012/10/05 PHP
php通过smtp邮件验证登陆的方法
2016/05/11 PHP
如何取得中文输入的真实长度?
2006/06/24 Javascript
JavaScript预解析及相关技巧分析
2016/04/21 Javascript
JavaScript中push(),join() 函数 实例详解
2016/09/06 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
Bootstrap CSS使用方法
2016/12/23 Javascript
Vue数据驱动模拟实现2
2017/01/11 Javascript
jquery mobile移动端幻灯片滑动切换效果
2020/04/15 Javascript
vue轮播图插件vue-awesome-swiper的使用代码实例
2017/07/10 Javascript
vue.js异步上传文件前后端实现代码
2017/08/22 Javascript
浅谈Webpack下多环境配置的思路
2018/06/27 Javascript
JavaScript this绑定过程深入详解
2018/12/07 Javascript
[01:37]DOTA2超级联赛专访ChuaN 传奇般的电竞之路
2013/06/19 DOTA
[38:44]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第二局
2016/02/25 DOTA
python聊天程序实例代码分享
2013/11/18 Python
Python浅拷贝与深拷贝用法实例
2015/05/09 Python
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
Python 实现取多维数组第n维的前几位
2019/11/26 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
python 实现客户端与服务端的通信
2020/12/23 Python
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
吉列剃须刀英国官网:Gillette英国
2019/03/28 全球购物
Aosom西班牙:家具在线商店
2020/06/11 全球购物
计算机系毕业生推荐信
2013/11/06 职场文书
公司财务流程之主管工作流程
2014/03/03 职场文书
2015年大学生党员承诺书
2015/04/27 职场文书
主持稿开场白
2015/06/01 职场文书
借钱欠条怎么写
2015/07/03 职场文书
情况说明书怎么写
2015/10/08 职场文书
python文件目录操作之os模块
2021/05/08 Python
python神经网络Xception模型
2022/05/06 Python
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技