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


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 相关文章推荐
jQuery固定元素插件scrolltofixed使用指南
Apr 21 Javascript
javascript实现可全选、反选及删除表格的方法
May 15 Javascript
javascript精确统计网站访问量实例代码
Dec 19 Javascript
JS沙箱模式实例分析
Sep 04 Javascript
vuejs实现本地数据的筛选分页功能思路详解
Nov 15 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
Dec 12 Javascript
基于vue中css预加载使用sass的配置方式详解
Mar 13 Javascript
Vue中JS动画与Velocity.js的结合使用
Feb 13 Javascript
js作用域和作用域链及预解析
Apr 11 Javascript
如何在JavaScript中创建具有多个空格的字符串?
Feb 23 Javascript
js实现简单选项卡制作
Aug 05 Javascript
一道JS算法面试题——冒泡、选择排序
Apr 21 Javascript
小程序实现文字循环滚动动画
React 高阶组件HOC用法归纳
Jun 13 #Javascript
React forwardRef的使用方法及注意点
原生Javascript+HTML5一步步实现拖拽排序
JS代码编译器Monaco使用方法
React中的Context应用场景分析
Jun 11 #Javascript
详解JVM系列之内存模型
You might like
php实现最简单的MVC框架实例教程
2014/09/08 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
2018/04/04 PHP
PHP封装的非对称加密RSA算法示例
2018/05/28 PHP
js中查找最近的共有祖先元素的实现代码
2010/12/30 Javascript
JSON 数据格式介绍
2012/01/13 Javascript
js select option对象小结
2013/12/20 Javascript
一个JavaScript的求爱小特效
2014/05/09 Javascript
jquery attr方法获取input的checked属性问题
2014/05/26 Javascript
Nodejs异步回调的优雅处理方法
2014/09/25 NodeJs
JavaScript中innerHTML,innerText,outerHTML的用法及区别
2015/09/01 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
2016/06/09 Javascript
js 弹出虚拟键盘修改密码的简单实例
2016/10/10 Javascript
nodejs根据ip数组在百度地图中进行定位
2017/03/06 NodeJs
详解vue-cli本地环境API代理设置和解决跨域
2017/09/05 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
2017/09/20 Javascript
利用百度地图API获取当前位置信息的实例
2017/11/06 Javascript
angular项目中bootstrap-datetimepicker时间插件的使用示例
2018/03/15 Javascript
小程序实现横向滑动日历效果
2019/10/21 Javascript
使用p5.js临摹动态图片
2019/11/04 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
2020/04/11 Javascript
编写一个javascript元循环求值器的方法
2020/04/14 Javascript
Vue双向数据绑定(MVVM)的原理
2020/10/03 Javascript
wxPython框架类和面板类的使用实例
2014/09/28 Python
Python实现合并字典的方法
2015/07/07 Python
Python实现简单拆分PDF文件的方法
2015/07/30 Python
Python输出各行命令详解
2018/02/01 Python
python Pandas 读取txt表格的实例
2018/04/29 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
Python 获取中文字拼音首个字母的方法
2018/11/28 Python
CSS3 3D位移translate效果实例介绍
2016/05/03 HTML / CSS
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
详解HTML5通讯录获取指定多个人的信息
2016/12/20 HTML / CSS
我的求职计划书
2014/01/10 职场文书
大学生旷课检讨书
2014/01/22 职场文书
社区优秀志愿者材料
2014/02/02 职场文书