腾讯云通信、网易云通信、极光IM、阿里百川、容云通信国内云通信抉择之路 看云通信市场风云与掌控力 带腾讯云通信实战代码demo

技术岛公众号

技术岛公众号

我们的当前的需求:需要在web中集成聊天功能。我不知道为什么我们只考虑使用别人家的云通信,没有考虑自建聊天功能,那就干脆顺着这个思路看了看腾讯云通信、网易云通信、极光IM、阿里百川、容云通信。

历史上的今天

记得18年做过网易云通信的小程序集成,记忆依旧是那么的清晰,好像昨天的事情。记得18年看到腾讯云通信是10万用户都免费,今天睁大眼睛再看看,免费的版本只支持100用户,简单差太远了。

怎么选?

从品牌实力上来讲,腾讯+阿里。但是腾讯不跟阿里玩,阿里百川社区里阿里的人在谴责、吐槽,还支招使用NGINX隐藏阿里域名。虽然阿里百川免费,但是就冲微信喜欢百川这一条,我们直接Pass掉了阿里。我到是想使用免费的百川,只是想想阿里把我的10年TB店都封掉了,我也Pass掉阿里。

从SDK 上来讲,我觉得网易云算是比较完善的,阿里虽然被Pass掉,但是今天比较的结果来看,本身阿里对于h5、小程序的支持就缺失。腾讯云通信显得比较高傲,爱用不用,demo就这么丑丑的,小程序demo可以说是亮瞎了眼,功能都不齐全。网易云的demo到是比较良心,不过,想想啊,想想啊,看起来比较良心,实际也没有怎么太考虑真实用户怎么去集成与使用。拿网易云通信小程序集成来讲,还得看我之前的版本,官方压根就不是用来集成的,纯粹用来秀。

改良版本:https://github.com/Lancker/NIM_Web_Weapp_Demo

从收费上来讲,阿里是免费的,但是不建议使用!极光好像也是免费的,但是没有来得及尝试demo,我们已经决定使用腾讯云通信了。

腾讯云通信Demo

头一次看到这么奇葩的git仓库,把H5、小程序、iOS、安卓都放一起了。公司克隆下来老是中断,浏览器下载也老是断。最后想了一招,先使用云服务器,将仓库zip包下载到服务器,再用国内云盘的离线下载功能下载,再通过云盘下到本地。

实战第一步:先去腾讯云通信后台创建一个应用

实战第二步:下载sig生成的服务端代码,很多选择。今天尝试的php版本,本来是想使用java版本的,但是时间有限啊。先来看看php版本。

部署效果:

http://imphp.joke.dog/index.php   临时部署的,访问这个页面会生成三上用户sig值,后面登陆用到。类似于一个登陆授权token。

string(308) “eJxNjV1rgzAYRv*LtxvzTTQTB7uQflDX2lqqqwwhpE3sglStxhoZ**8Tt267PYfzPB9GtNo9sOOxbAtFVV8J48kA437EkotCyUyKeoBKNArQj2FVJTllilo1-xc0PKejGhiyATC4xLo1QleyFpRlatxDhBAMcEuvom5kWQwCAyIIWwB-Usmz*E4cGxxEfv-kacDBLJ7426nO3fnbwivz-BB55TVCUReHurvMUvN1H3pbvj73SeK-k9TEnX96ceRit7H6eJ5t2tVhAsE6yYgOhGvfPS4LLvftchqm5kWz4Nn4-AJSVVjS” bool(true) ======string(308) “eJxNjdtOg0AURf9lno09MzBcfCOtSakK0ppeTBNCYIAjwoww9hr-vQTr5XWtrL3P5OVxcZukqfxsdKyPSpA7AuRmwJiJRmOOou2hFp0GdjWJUpjFiY6NNvsXdFkVD6pn1ARg4HKDXqU4KGxFnOR62KOccwbwk*5E26FsesGAcsoMgD*psRbfiW2CTfnvHxY9frrfjP1o4mz2JU5Xp0Cm25G79O2pZ3jV*rBfUvl2lNYpaPNuYdGwdAq-9EK2LiYzaMTcquh2FETmg-KSj5k5r153WY3puHbD*t2JGueZfF0A5KJYdg__” bool(true) ======string(308) “eJxNj9tOg0AQQP*FZyOzCyvWpA8VSC2WNIipqSEhUIY6FSldFlI0-rsbrJfXc*bMZD6Mx2V8mW23h65WqRoaNG4MMC5GTAXWikpCqaHCVoF1NlnTUJFmKrVk8S9oi9d0VJoxG4DDRFjsLPHUkMQ0K9W4jwkhOMBP2qNs6VBrwYEJxi2AP6noDb8TxwaHid97tNM49CN3MS9Pifm8xNgtdg9H387aY1j2eL12EtMN5NynSbxKzHuM74bwfUa3ez3ezdpqk0fei90PwxXfiy7y8kD-yStr9bQgb1PF6yCPplPj8wunDlk9” bool(true)

我直接生成了三个用户的sig值,代码是用腾讯云通信demo代码简单改造而来。php的写法让我有点想吐了。就像好久没有坐公交车。来来来,上代码。

<?phpinclude 'TLSSigAPI.php';use Tencent\TLSSigAPI;final class ZuimeIM{    static private $private_key_string = <<<'EOT'-----BEGIN PRIVATE KEY-----MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgjVKC5YlaxSH8FFeqYac++yKIXQ6+edkSQC21+uUQivyhRANCAATtoD5MbgZ+h/O3Rdiu8c3B+BXktZrQXRgR39N0k/xzkTOkD5PZZfFCyUVHDjK9PiJ3iNqdE4HebFsiiSJu+xbC-----END PRIVATE KEY-----EOT;    static private $public_key_string = <<<'EOT'-----BEGIN PUBLIC KEY-----MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7aA+TG4Gfofzt0XYrvHNwfgV5LWa0F0YEd/TdJP8c5EzpA+T2WXxQslFRw4yvT4id4janROB3mxbIokibvsWwg==-----END PUBLIC KEY-----EOT;    public function testGenAndVerify($userCode){        $api = new TLSSigAPI();        $api->SetAppid(1400209531);//设置在腾讯云申请的appid        $api->SetPrivateKey(self::$private_key_string);//生成usersig需要先设置私钥        $api->SetPublicKey(self::$public_key_string);//校验usersig需要先设置公钥        $sig = $api->genSig($userCode);//生成usersig        $result = $api->verifySig($sig, $userCode, $init_time, $expire_time, $error_msg);//校验usersig    var_dump($sig);    var_dump($result);    }}$zuimeIM = new ZuimeIM();$zuimeIM->testGenAndVerify("test01");echo "======";$zuimeIM->testGenAndVerify("test02");echo "======";$zuimeIM->testGenAndVerify("test03");​

把官方的H5代码传上去(推荐使用filezilla ftp,开源免费好用)!index.html中的代码要调整一下,主要是换一下appid等,非常简单,直接看代码注释就换掉了。不再晒代码!直接看效果吧!

http://imphp.joke.dog/H5/index.html

后记:demo只是跑起来,真正的业务才刚刚开始!不过,至少知道怎么跑起来了!国内云通信还是有不少,但是他们没有真正站在集成的角度思考,坑苦了一般哥们做二次开发!统一云通信将是下一个趋势!

注意:本文中使用到的

http://imphp.joke.dog/index.php

http://imphp.joke.dog/H5/index.html

是临时搭建的,如果点不开的话,就自己再搭一个吧。喜欢玩服务器的,可以加好友!

此条目发表在未分类分类目录。将固定链接加入收藏夹。

发表评论

邮箱地址不会被公开。 必填项已用*标注