环境: php7.0 apache 2.4 swoole 1.9 redis 4.0
bilibili : https://www.bilibili.com/vide...
github地址:https://github.com/buffge/buf...php
样子差很少是这个样子的:mysql
我不想把代码发到个人服务器上,由于这个项目过小了.很垃圾.并且怕被攻击.
这里有录的一个演示视频(bilibili没有广告的).大家能够看一下,
大家也能够直接到github 把源码下载下来, 绝对有用.很差用找我.
把个人ip地址 192.168.1.109改为大家的ip就能用了.
我这里作了3个房间,首次登陆是在公共聊天室.能够随意切换到文人雅士专区,固然了也能够选择去死肥宅那一栏.
流程差很少是这样:git
登陆一个聊天室github
1.1 后台触发open 事件. 此时判断是初次登陆仍是已注册以后刷新的,若是是注册刷新的话 将session中保存的用户 信息发送给swoole服务器 并进行注册.而后返回注册成功或者失败,还有当前在线的用户列表 若是是新用户,那么就直接将当前所在的聊天室的全部用户列表发送给客户端.二者都会插入新数据进redis数据库
1.2 此时若是不注册 那么就没法发消息给当前分组,若是注册的话 先去网站后台验证session 验证码 并将使用的用户名web
和时间戳和盐进行sha256信息摘要.而后向swooleWebSocket服务器请求注册.此时服务器会判断 若是用户信息的前6个字母 是tokenR 而且当前未注册 若是token 验证成功那么就插入redis数据库,并通知客户注册成功,再通知客户所在组的全部用户 添加用户用户(就是当前在线那一栏) 代码差很少是这样的
此时已经登陆成功了,能够随意切换分组了.每次切换分组用户的编号都会重设.由于swoole规定就是这样,只要断开链接,
以后的链接就是一个新链接,好比以前的socket号 是1 那么断开后下一个就是2.可是根据session 判断是能够保存住用户名,
而使刷新以后仍是以前的用户名.(可是这)
2.1redis
公共聊天室的人聊天只有公共聊天室人看见,文人雅士专区只有文人雅士看见.
2.2sql
私信单聊只有对方能够看见,别人都看不见 这个主要就是将发送的信息前6个字母写成sendTo 代码流程差很少是这样的.
后台主要就是我新建的一个叫WebS的类.这个类继承了SwooleWebsocketServer
并新增一些逻辑方法
主要以下:数据库
1. checkRegisterName() 检查用户名是否能够用 原型 checkRegisterName(\Redis $redis, string $user_name, \buff\string $reload) : boolean 2. 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() 获取当前全部已注册的用户列表 原型我就不写了,下面贴github.源码注释好了 5. checkToken() 检查token 是否正确 6. judgeMesEventType() 判断用户发送的消息 分析他想要干吗
没了. 是否是超简单. 有了swoole 这样简单.并且这个是国人开发的! 大家去swoole官网能够学习,文档不少,并且swoole功能能强大,
我只看了一点点websocket 那一章的,其余的基本没看,由于看不懂! 还有redis 普通用法很简单.我就是上慕课网> 看了20分钟这个视频.>http://www.imooc.com/video/14315 我这里就是把redis 看成mysql来用的.
而后只用了hash 这一个类型,用了两三个函数,其余的都不会.什么加锁 只读之类的都没有弄
phpredis扩展百度安装.
这个是一次性完成的,从昨天夜里开始作,作到早上,没有检查,我就看能正常运行,控制台没有异常信息 就发上来了.
要是大家遇到问题,我能解决的必定解决. 另外 请你们支持国产优秀做品 swoole!http://swoole.com
swoole 官方qq交流群 193772828 我在里面属于菜逼那种.大家学习swoole 有问题能够去群里交流.
再说一遍 视频地址(7分钟 演示)apache
bilibili : https://www.bilibili.com/vide...
github地址:https://github.com/buffge/buf...服务器