美文网首页PHP经验分享PHP开发
SWOOLE开发实时聊天系统(一)准备工作

SWOOLE开发实时聊天系统(一)准备工作

作者: 公式般欢笑 | 来源:发表于2020-03-05 00:11 被阅读0次

    我的上家公司的产品中,有一个直播系统。主要是让店铺进行直播卖货,店铺端作为主播,播送店铺里的商品供买家观看和购买。在去年离职的前一个月,产品告诉我一个任务,我们的直播系统,要让用户互动起来,所以需要加入一个类似于淘宝直播的聊天框的功能。
    离职后结婚,忙了一阵。而后想出去旅游,赶上了新冠肺炎,于是就在家宅了春节前后两个月。当人的心灵空虚到一定程度的时候,就一定会给自己找事做。于是,研究了一些PHP7的源码,对之前工作中不如意的地方做了一些总结,然后想到了之前自己写的这个实时聊天的服务。源码在上家公司离职的时候就删掉了,但就现在回想起来,依然有不少问题存在。因此想着重新实现一下这个服务,一来可以加深自己的理解,二来可以打发一下百无聊赖的心绪,实为一举两得。

    1 需求分析

    产品只说了一句“需要像淘宝直播一样有聊天框,用户说的话可以实时显示,并且用户进入房间要通知其他用户‘xxx进来了’的字样”。
    虽然产品说的需求就这么一句话,但是作为项目负责人,还是不得不分析一下。
    首先,每个店铺都可以直播,每个直播都对应一个ID,那么用户无论是进入哪个直播都必须给聊天服务传递一个直播ID,否则无法将人对应到直播。
    其次,要有个媒介来存储当前直播和用户之间的关系,在某个用户发言的时候,通过用户传入的直播ID来广播到所有用户。
    再次,要有一个聊天内容过滤的机制。当某个用户发送不良言论的时候,直接替换掉敏感词。
    OK,让我们一一来解决。

    2 技术选型

    2.1. 语言框架

    这个任务很紧急,一共就只有两天半的时间。所以不能使用新技术来解决这个问题(我很想用GO实现一个生产环境的服务)。老老实实用回PHP。
    PHP中可以实现长连接的方法一共有两种,Workerman和Swoole。关键问题是,这两个框架我都没有用过!
    不过鉴于二者目前的市场表现和热度,所以选择了后者。

    2.2. 数据库

    由于聊天过程中,用户可以随时进出,所以对于数据库的读写是比较频繁的。因此选择Redis来存储用户的信息,以及用户直播的对应关系更为合理。
    OK,有了合适的框架和数据库,我们接下来就可以整理架构了。

    相关文章

      网友评论

        本文标题:SWOOLE开发实时聊天系统(一)准备工作

        本文链接:https://www.haomeiwen.com/subject/gtaclhtx.html