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


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 相关文章推荐
小议javascript 设计模式 推荐
Oct 28 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
Sep 24 Javascript
Es6 写的文件import 起来解决方案详解
Dec 13 Javascript
提升页面加载速度的插件InstantClick
Sep 12 Javascript
JS中精巧的自动柯里化实现方法
Dec 12 Javascript
详解js类型判断
May 22 Javascript
Vue和React组件之间的传值方式详解
Jan 31 Javascript
Vue使用NProgress进度条的方法
Sep 21 Javascript
JS动态图片的实现方法完整示例
Jan 13 Javascript
详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)
Jul 11 Javascript
js+css3实现简单时钟特效
Sep 13 Javascript
详解vue中使用transition和animation的实例代码
Dec 12 Vue.js
小程序实现文字循环滚动动画
React 高阶组件HOC用法归纳
Jun 13 #Javascript
React forwardRef的使用方法及注意点
原生Javascript+HTML5一步步实现拖拽排序
JS代码编译器Monaco使用方法
React中的Context应用场景分析
Jun 11 #Javascript
详解JVM系列之内存模型
You might like
WordPress中调试缩略图的相关PHP函数使用解析
2016/01/07 PHP
基于PHP实现通过照片获取ip地址
2016/04/26 PHP
简单的pgsql pdo php操作类实现代码
2016/08/25 PHP
Jquery+JSon 无刷新分页实现代码
2010/04/01 Javascript
jQuery取id有.的值的方法
2014/05/21 Javascript
jQuery的css() 方法使用指南
2015/05/03 Javascript
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
2015/09/14 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
2016/11/29 Javascript
微信小程序 实战程序简易新闻的制作
2017/01/09 Javascript
利用NPM淘宝的node.js镜像加速nvm
2017/03/27 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
2017/04/18 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
2017/09/18 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
2017/09/26 Javascript
Angular实现的table表格排序功能完整示例
2017/12/22 Javascript
详解vuex结合localstorage动态监听storage的变化
2018/05/03 Javascript
fetch 如何实现请求数据
2018/12/20 Javascript
微信小程序自定义toast组件的方法详解【含动画】
2019/05/11 Javascript
通过实例解析chrome如何在mac环境中安装vue-devtools插件
2020/07/10 Javascript
Vue3新特性之在Composition API中使用CSS Modules
2020/07/13 Javascript
python字符串加密解密的三种方法分享(base64 win32com)
2014/01/19 Python
Python FTP操作类代码分享
2014/05/13 Python
跟老齐学Python之集合的关系
2014/09/24 Python
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
浅谈Python实现贪心算法与活动安排问题
2017/12/19 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
2019/04/15 Python
Python命令行参数解析工具 docopt 安装和应用过程详解
2019/09/26 Python
Pytorch Tensor基本数学运算详解
2019/12/30 Python
Python PyPDF2模块安装使用解析
2020/01/19 Python
python中字符串的编码与解码详析
2020/12/03 Python
HTML5 解析规则分析
2009/08/14 HTML / CSS
Magee 1866官网:Donegal粗花呢外套和大衣专家
2019/11/01 全球购物
乡镇干部十八大感言
2014/02/17 职场文书
村干部承诺书
2014/03/28 职场文书
县政府办公室领导班子个人对照检查材料
2014/09/16 职场文书
业余无线电通联Q语
2022/02/18 无线电