前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >1个人3步轻松搞定“实时聊天室” | 云开发实战

1个人3步轻松搞定“实时聊天室” | 云开发实战

原创
作者头像
腾讯云开发TCB
发布2020-03-31 15:42:10
1.6K1
发布2020-03-31 15:42:10
举报
文章被收录于专栏:云开发云开发

用云开发来快速开发一个实时在线聊天室。

这是一个由 create-react-app 快速生成的脚手架项目,所以大部分构建和工程化的细节这里就略过不谈了,我们直接来看代码实现,大致上实现了三个功能,括号中是使用的云开发能力:

  • 登录(匿名登录[1]
  • 实时同步消息(数据库实时推送[2]
  • 发送消息(数据库写[3]

首先是我们的初始化流程,先使用匿名登录[4],然后建立实时数据推送[5]的连接:

代码语言:javascript
复制
asyncfunction init() {
  // 使用匿名登录
  await auth.anonymousAuthProvider().signIn();

  // 使用 refreshToken 的前 6 位作为 uid
  setUid(auth.hasLoginState().credential.refreshToken.slice(0, 6));

  // 建立实时数据推送连接
  await db
    .collection("messages")
    .where({})
    .watch({
      onChange(snapshot) {
        setList(snapshot.docs);
        setLoading(false);
      },
      onError(err) {
        console.log(err);
      },
    });
}

建立实时连接之后,集合中的任何变化,都会触发 onChange() 回调,然后我们使用 setList() 来更新界面上的消息数据。

当然只读消息是不够的,我们还需要发送消息,具体实现非常简单,可以看 sendMessage() 方法,直接使用 add() 方法向数据库写入数据就可以了:

代码语言:javascript
复制
// 发送消息
asyncfunction sendMessage() {
  const message = {
    timestamp: newDate().getTime(),
    text,
    uid,
  };
  await db.collection("test").add(message);
  // 清空输入栏
  setText("");
}

当然以上只是局部的代码片段,整体代码可以参考:

https://github.com/TencentCloudBase/cloudbase-realtime-demo/blob/master/src/App.js

开发完毕之后,我们便可以使用 云开发静态网站[6] 来托管我们的这个聊天室 Web 应用。

首先我们构建我们的应用:

代码语言:javascript
复制
$ npm run build

构建产物会生成到 build 目录下。

然后我们发布到静态托管即可(托管前,请先开通静态网站[7]):

代码语言:javascript
复制
$ cloudbase hosting:deploy ./build -e your-env-id

发布完成后,你便可以通过 https://xxxx.tcb.qcloud.la/xxxx 的来访问你的应用了。进一步,你还可以为它绑定自定义域名[8]

PS:实际上,云开发的主页[9]官方文档[10],就是这样托管的(毕竟做云服务的,最重要的就是 Eating your own dog food嘛)。

当然,除了这个实战 Demo 以外,还可以看看一些真正业务的实践:

项目代码:https://github.com/TencentCloudBase/cloudbase-realtime-demo

参考资料

[1]匿名登录: https://docs.cloudbase.net/authentication/anonymous.html

[2]数据库实时推送: https://docs.cloudbase.net/api-reference/web/database.html#shu-ju-ku-shi-shi-tui-song

[3]数据库写: https://docs.cloudbase.net/database/insert.html

[4]匿名登录: https://docs.cloudbase.net/authentication/anonymous.html

[5]实时数据推送: https://docs.cloudbase.net/api-reference/web/database.html#shu-ju-ku-shi-shi-tui-song

[6]云开发静态网站: https://docs.cloudbase.net/hosting/

[7]开通静态网站: https://docs.cloudbase.net/hosting/#kai-tong

[8]绑定自定义域名: https://docs.cloudbase.net/hosting/custom-domain.html

[9]主页: https://www.cloudbase.net/

[10]官方文档: https://docs.cloudbase.net/

云开发(CloudBase)是一款云端一体化的产品方案 ,采用 serverless 架构,免环境搭建等运维事务 ,支持一云多端,助力快速构建小程序、Web应用、移动应用。

技术文档:https://www.cloudbase.net/

微信搜索:腾讯云云开发,获取项目最新进展

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考资料
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档