今天做一个简单的聊天室,支持换房和私信。写的代码有点草率,里面有很多不好的地方。毕竟,我只是一个狂野的程序员。环境:php7.0apache2.4swoole1.9redis4.0bilibili:https://www.bilibili.com/video...github地址:https://github.com/buffge/buf...长这样:我不想将代码发送到我的服务器因为这个项目太小了。这是垃圾。而且我害怕被攻击。这是录制的演示视频(bilibili没有广告)。大家可以看看,也可以直接从github上下载源码。这绝对有用。找到我并不容易。把我的ip地址192.168.1.109改成你的ip就可以用了。我这里做了3个房间,第一次登录是在公共聊天室。可以随意切换到文人区,当然也可以选择去死肥宅的栏目。流程差不多是这样的:登录一个聊天室1.1,后台触发open事件。这个时候判断是第一次登录还是注册后刷新。如果是注册刷新,将session中保存的用户信息发送到swoole服务器进行注册。然后返回注册成功或失败,以及当前在线用户列表。如果是新用户,则直接将当前聊天室的所有用户列表发送给客户端。两者都会插入新数据进入redis数据库1.2如果此时不注册,则无法向当前群发送消息。注册的话,先去网站后台验证session验证码,对用户名、时间戳、使用的salt进行sha256信息汇总。然后向swooleWebSocket服务器发送消息请求注册。此时服务端会判断如果用户信息的前6个字母是tokenR且当前未注册,如果token校验成功则插入到redis数据库中,并通知客户注册成功,然后通知customer所在组的所有用户添加用户user(就是当前在线的那一栏)代码差不多就是这样。这时候你就已经成功登录了,你可以随意切换群组。每次切换群组时,用户编号都会被重置。因为这是swoole的规定,只要断开连接,后面的连接都是新的连接。比如上一个socket号是1,断开后下一个是2。但是根据session判断,可以保存用户名,刷新后会保留上一个用户名。(但是这个)2.1在公共聊天室聊天的人只有公共聊天室的人才能看到,只有文人才能在文人区看到。2.2私信单聊只能对方看到,其他人看不到。这主要是要发送的消息的前6个字母写成sendTo的代码流程差不多就是这样。哦,我发现进程这么小。让我们看看背景。后台主要是一个新类,叫做WebS。该类继承SwooleWebsocketServer,增加一些逻辑方法如下:1.checkRegisterName()检查用户名是否可用原型checkRegisterName(\Redis$redis,string$user_name,\buff\string$reload):boolean2。sendToPerson()向单个用户发送消息原型sendToPerson(integer$fd,string$mes,integer$type,string$sendTo="",string$user_name="",\Redis$redis=null)3.sendToGroup()向单个组发送消息原型sendToGroup(int$frameFd,\Redis$redis,string$user_name,int$type,string$mes="",string$group="public")4.getOnlineUsersList()I不会写原型获取所有当前注册的用户列表,下面github上贴一下。源码有注释5.checkToken()检查token是否正确6.judgeMes??EventType()判断用户发送的消息,分析他要做什么。是不是超级简单?有了swoole就这么简单。而且这是中国人开发的!,文档很多,swoole可以很强大。websocket这一章只看了一点点,其他的基本没看,因为看不懂!还有redis,总的来说用起来很简单。我刚刚在MOOC上阅读它>20分钟的视频。>http://www.imooc.com/video/14315我在这里它使用redis作为mysql。然后只用hash类型,用两三个函数,其他的不用。获取phpredis扩展百度安装没有加锁和只读。这是一口气完成的,从昨晚开始,一直到早上,没有检查,看到能正常运行,控制台也没有异常信息,就发上来了。如果你遇到问题,我一定会解决的。另外,请大家多多支持国内的优秀作品swoole!http://swoole.comswoole官方qq交流群193772828我属于里面的那种吃货力。学习swoole有什么问题可以进群交流。再次,视频地址(7分钟demo)bilibili:https://www.bilibili.com/vide...github地址:https://github.com/buffge/buf...
