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


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 实现??打印?理
Apr 28 Javascript
JAVASCRIPT IE 与 FF中兼容问题小结
Feb 18 Javascript
jquery multiSelect 多选下拉框
Jul 09 Javascript
js操纵dom生成下拉列表框的方法
Feb 24 Javascript
js数组中如何随机取出一个值
Jun 13 Javascript
ajax 提交数据到后台jsp页面及页面跳转问题
Jan 19 Javascript
AngularJS遍历获取数组元素的方法示例
Nov 11 Javascript
react实现点击选中的li高亮的示例代码
May 24 Javascript
浅谈vuex actions和mutation的异曲同工
Dec 13 Javascript
Vue2.0实现组件之间数据交互和通信操作示例
May 16 Javascript
jquery 遍历hash操作示例【基于ajax交互】
Oct 12 jQuery
PHP读取远程txt文档到数组并实现遍历
Aug 25 Javascript
小程序实现文字循环滚动动画
React 高阶组件HOC用法归纳
Jun 13 #Javascript
React forwardRef的使用方法及注意点
原生Javascript+HTML5一步步实现拖拽排序
JS代码编译器Monaco使用方法
React中的Context应用场景分析
Jun 11 #Javascript
详解JVM系列之内存模型
You might like
php字符串截取中文截取2,单字节截取模式
2007/12/10 PHP
php获取网站根目录物理路径的几种方法(推荐)
2017/03/04 PHP
网页中返回顶部代码(多种方法)另附注释说明
2013/04/24 Javascript
Ajax请求在数据量大的时候出现超时的解决方法
2014/02/27 Javascript
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
2014/09/26 NodeJs
javascript实现五星评价代码(源码下载)
2015/08/11 Javascript
不得不分享的JavaScript常用方法函数集(上)
2015/12/23 Javascript
jquery获取复选框checkbox的值的简单实现方法
2016/05/26 Javascript
使用Vue组件实现一个简单弹窗效果
2018/04/23 Javascript
mpvue项目中使用第三方UI组件库的方法
2018/09/30 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
2019/08/28 Javascript
js 对象使用的小技巧实例分析
2019/11/08 Javascript
vue单文件组件无法获取$refs的问题
2020/06/24 Javascript
Vue如何循环提取对象数组中的值
2020/11/18 Vue.js
使用js原生实现年份轮播选择效果实例
2021/01/12 Javascript
[03:17]DOTA2英雄基础教程 剧毒术士
2013/12/12 DOTA
python复制文件代码实现
2013/12/23 Python
更改Python命令行交互提示符的方法
2015/01/14 Python
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
2015/08/10 Python
python发送邮件功能实现代码
2016/07/15 Python
Python操作Sql Server 2008数据库的方法详解
2018/05/17 Python
python实现K近邻回归,采用等权重和不等权重的方法
2019/01/23 Python
python实现微信自动回复及批量添加好友功能
2019/07/03 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
2019/08/02 Python
django基础学习之send_mail功能
2019/08/07 Python
python 图像处理画一个正弦函数代码实例
2019/09/10 Python
从多个tfrecord文件中无限读取文件的例子
2020/02/17 Python
Python selenium爬取微信公众号文章代码详解
2020/08/12 Python
CSS3常用的几种颜色渐变模式总结
2016/11/18 HTML / CSS
农村婚庆司仪主持词
2014/03/15 职场文书
机关单位工作失职检讨书
2014/11/20 职场文书
复兴之路观后感3000字
2015/06/02 职场文书
红白喜事主持词
2015/07/06 职场文书
2019年怎样才能撰写出优秀的自荐信
2019/03/25 职场文书
Nginx防盗链与服务优化配置的全过程
2022/01/18 Servers