我来不匿名聊聊这小程序的技术观察

在这之前,我要先发个誓:本文绝无帮别人做广告!如过有!那我的笔记本电脑不得好死。

事情是这样的。。。

相信很多同学的朋友圈今天被一张写了一句话,加上一个菊花码,还加上三个数字的图片刷屏了。

这款小程序名字叫「匿名聊聊」,花叔从中午就开始看到这个小程序在朋友圈刷屏,自己也转发了类似的图片,有些网友看到后还问我是不是我做的,很遗憾,不是我做的,但我可以从技术角度给大家解读一下这个小程序的一些实现逻辑。

在说技术细节前,我首先要澄清一个事情:部分网友以为这款小程序是腾讯官方做的,我可以明确地告诉大家:不!是!的!

小程序主体鉴别方法

大家可别以为牛逼的小程序都是腾讯自己做的哈,民间也有很屌的小程序的,至于怎么看出来的呢?今天顺便教大家一个鉴别小程序所属主体的方法,很简单:

进入这个小程序后,点击右上角会弹出一个菜单,然后按照图示就能找到它的主体信息,这个小程序是一家厦门的公司做的,从它的“服务及数据”接口来看的话,你还能发现它有个产品叫“印象朋友”。

这是公司为主体的小程序,小程序还有个人为主体的,花叔的「Nodes」小程序就是个人为主体的,里面会显示个人开发者的姓氏:

于是现在大家都知道我叫“周杰伦”了!哎呦,不错吧?

所以,以后大家看到某个有意思的小程序时就这样子去看它的主体来判断是什么人做的就好,别傻傻地觉得都是腾讯做的哦,虽然腾讯内也有外包给别的公司做小程序的情况,但实际上这种情况很少。

匿名聊聊小程序的技术猜测

创意和产品不是花叔擅长的领域,这里就不细说了。接下来,花叔从专业角度来给大家猜想一下这款小程序的技术细节,以下为花叔个人对这款小程序的技术解读,由于没有源码(人家也不可能给我源码),没法深入理解真正的技术要点,以下只为猜想,大家可以理解为:如果是花叔来实现这个小程序,那么技术架构是怎么搭建的。

首先,根据这个小程序的功能点,我用「Nodes」预想了一下这里头涉及的技术点和小程序API:

附大图:

实际上,这个小程序应用的技术并不难,

主要技术概括起来有三点:

  1. WebSocket技术,用以去实现匿名聊天
  2. canvas绘图技术+图片预览技术,用以实现用户头像和小程序自身小程序码的组装结合

巧妙的地方有一点:

要做到聊天室的唯一并且可传播,有两个做法,第一种做法是:生成带参数的二维码图片;第二种做法是用固定二维码或程序码+密码校验

显然开发者用的是第二种做法,为什么说它巧妙,首先我要给大家科普一个事情,带参数的二维码是有生成次数限制的,按照这款小程序目前的转发量来看,显然二维码是不够用的,

所以开发者选择了第二种方法,他们把小程序码中间的logo挖空,然后用canvas api去把用户的头像和挖空的小程序码图片叠加组合,这么说可能有点抽象,我举个例子,例如Nodes小程序的小程序码是这样的:

通过以下操作,就能变成一个个性化的小程序码,

然后再加上一个随机的三位密码,进行聊天室的校验。

这个设计套路还是蛮有趣的,能借鉴到其他小程序项目中。

但这个小程序也有美中不足的点:

  1. 它的授权机制没做好。静默授权跟用户信息获取的API相互结合,用以实现整个程序的鉴权体系,这样会导致一个很不友好的情况出现,就是用户拒绝授权后,需要删掉小程序才能重新发起授权确认(或者要做一个单独的授权管理页面)
  2. 服务器承载能力预估失败。聊天框消息因网络问题没法正常接收和发送,这应该跟并发量太高有关,可能不算是不足的点吧,应该算是意外吧,可能也没想到会这么火。

略表愚见,希望大家喜欢,同时大家有觉得好的小程序也可以告诉我,我来帮忙做技术观察。

最后,希望该小程序的开发者看到本文觉得不对的时候不要拆穿我~^_^~

毕竟,我也会卖萌哒吖~耶~

原文发布于微信公众号 - MinProgram(gh_0d2d5abccc20)

原文发表时间:2017-05-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据和云计算技术

实用调度工具Airflow

引言 前面写过一篇文章《端午搬砖:聊聊调度云服务》,主要讲云服务的。如果企业也业务上云,可以优先选用这些服务,减少工作量。 而在传统企业内部,数据集成是基础,更...

1K60
来自专栏大数据挖掘DT机器学习

R&Python玩家诉求词云分析

作者:Fish http://www.gamedas.com 一、数据爬虫 在实际工作中,数据的来源不能局限于自家的数据库或者成型的后台,在做某些市场分析或是竞...

36160
来自专栏程序你好

与Java、PHP 、C#相比,为什么Python薪资更高?

46920
来自专栏安智客

可信软件基概述

安智客长期关注可信执行环境TEE,今天了解学习一些可信软件基TSB(Trusted Software Base)。要了解可信软件基,先来了解可信计算基TCB(T...

83440
来自专栏Java架构

Java程序员你跟架构师的差别在哪里?

23090
来自专栏EAWorld

命令式和声明式,哪个才是你的菜

今天的主题是讨论一下“命令式”思想和“声明式”思想在分布式系统和微服务架构运维中的应用。 主要大纲 1. “命令式”和“声明式”的概念 2. 命令式思想在分布式...

96660
来自专栏大数据文摘

前方高能!这可能是一张会颠覆你编程学习的思维图!

25370
来自专栏郭耀华‘s Blog

【分享】熟练的Java程序员应该掌握哪些技术?

Java程序员应该掌握哪些能力才能算是脱离菜鸟达到熟练的程度?   1、语法:Java程序员必须比较熟悉语法,在写代码的时候IDE的编辑器对某一行报错应该能...

35050
来自专栏人工智能头条

提高代码阅读能力的7种方法

19140
来自专栏Crossin的编程教室

编程初学者如何使用搜索引擎

或许你会认为这篇文章的内容极为基础。事实上,我也是这么觉得的。但从很多同学的留言以及QQ群中的讨论来看,还是有必要简单地科普一下,分享我的一点“搜索”经验。 如...

41470

扫码关注云+社区

领取腾讯云代金券