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


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中最常用的继承模式 组合继承
Aug 12 Javascript
JavaScript获取XML数据附示例截图
Mar 05 Javascript
JS判断客服QQ号在线还是离线状态的方法
Jan 13 Javascript
jquery马赛克拼接翻转效果代码分享
Aug 24 Javascript
浅析Bootstrap验证控件的使用
Jun 23 Javascript
javascript实现根据汉字获取简拼
Sep 25 Javascript
canvas知识总结
Jan 25 Javascript
jquery实现手机端单店铺购物车结算删除功能
Feb 22 Javascript
iscroll动态加载数据完美解决方法
Jul 18 Javascript
js微信分享实现代码
Oct 11 Javascript
vue favicon设置以及动态修改favicon的方法
Dec 21 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
May 08 Javascript
小程序实现文字循环滚动动画
React 高阶组件HOC用法归纳
Jun 13 #Javascript
React forwardRef的使用方法及注意点
原生Javascript+HTML5一步步实现拖拽排序
JS代码编译器Monaco使用方法
React中的Context应用场景分析
Jun 11 #Javascript
详解JVM系列之内存模型
You might like
ThinkPHP写第一个模块应用
2012/02/20 PHP
PHP实现根据设备类型自动跳转相应页面的方法
2014/07/24 PHP
php实现高效获取图片尺寸的方法
2014/12/12 PHP
php类的扩展和继承用法实例
2015/06/20 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
PHP+redis实现的购物车单例类示例
2019/02/02 PHP
PHP数组遍历的几种常见方式总结
2019/02/15 PHP
JavaScript 的方法重载效果
2009/08/07 Javascript
浅谈关于JavaScript的语言特性分析
2013/04/11 Javascript
详解JavaScript语法对{}处理的坑爹之处
2014/06/05 Javascript
javascript根据时间生成m位随机数最大13位
2014/10/30 Javascript
chrome不支持form.submit的解决方案
2015/04/28 Javascript
js判断文本框输入的内容是否为数字
2015/12/23 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
2016/02/14 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
jquery.tableSort.js表格排序插件使用方法详解
2020/08/12 Javascript
Node.js自定义实现文件路由功能
2017/09/22 Javascript
p5.js入门教程之小球动画示例代码
2018/03/15 Javascript
jQuery实现ajax的嵌套请求案例分析
2019/02/16 jQuery
layer提示框添加多个按钮选择的实例
2019/09/12 Javascript
jQuery 查找元素操作实例小结
2019/10/02 jQuery
js实现一款简单踩白块小游戏(曾经很火)
2019/12/02 Javascript
[02:49:21]2019完美盛典全程录像
2019/12/08 DOTA
python获取目录下所有文件的方法
2015/06/01 Python
python二分查找算法的递归实现方法
2016/05/12 Python
pandas进行时间数据的转换和计算时间差并提取年月日
2019/07/06 Python
python随机数分布random均匀分布实例
2019/11/27 Python
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
美体小铺印度官网:The Body Shop印度
2019/10/17 全球购物
PHP中如何使用Cookie
2015/10/28 面试题
UML设计模式笔试题
2014/06/07 面试题
解决方案设计综合面试题
2015/08/31 面试题
四风问题党员个人整改措施
2014/10/27 职场文书
安全教育培训心得体会
2016/01/15 职场文书
工作报告范文
2019/06/20 职场文书
Java用自带的Image IO给图片添加水印
2021/06/15 Java/Android