PHP分组聊天室--fooking现实
PHP分组聊天室--fooking现实
呵大官人 发表于3年前
PHP分组聊天室--fooking现实
  • 发表于 3年前
  • 阅读 4221
  • 收藏 66
  • 点赞 3
  • 评论 13

【腾讯云】新注册用户域名抢购1元起>>>   

   最近也是比较忙,公司打码,回家继续打,越忙越折腾! 一个不小心半夜一点了,花了一晚上时间终于把这个分组聊天室写完了,前两天刚把fooking的websocket协议加上,纯lua实现。

   fooking的项目地址:http://git.oschina.net/scgywx/fooking

   在线demo地址: http://182.254.135.131/chat/

   开发聊天室这基本是上每个搞socket长连接的一个通例了,主要是实现起来简单,能使用最少的代码实现客户端与服务端持久通信,那么这次也不例外,还是拿聊天室说事,不过这次要"高级"一点,能分组,而不是发个消息就广播给所有人。当某个用户向指定组发送数据时,只有在此分组的用户才能收到消息,别的分组不会收到消息。当然这里的分组是利用了fooking的一个组播机制,把N个客户端加入到一个分组(组名可以是任意字符串),发消息的时候只需要指定组名即可(其实也就是存储一个列表,然后遍历发送,只是这一步由fooking完成)。

   聊天室的界面大概就是如下这样子,左边是用户列表,右上方是频道列表(可以选择),下面是消息列表,当选择一个你没有加入过的频道将会弹出“加入此频道“的按钮,点击就能加入该频道了,剩下的就是聊天了,大致功能就是这样子。


    这样一个聊天室程序,只需要不到100行php和不到200行html/css/js,其配置也非常简单,如下步骤:

    1、启动router, 修改项目src目录下的router.lua配置文件(比如:端口,日志等),然后执行:./fooking router.lua

    2、启动gateway, 修改项目src目录下的config.lua配置文件(比如:端口,router端口,script, php程序路径等,最主要是FASTCGI_ROOT),  然后执行: ./fooking config.lua   

              注意:  在config.lua里面配置了script.lua(用于处理打包和解包),在修改config.lua的时候请注意script.lua的路径

                          script.lua里面使用了websocket协议,他需要依赖另一个Sha1.lua文件(在src目录就有),请注意一定要把script.lua与Sha1.lua放在同一目录,不然可能会报错

    3、 安装php-fpm、redis、redis扩展

    4、修改example/chat/index.html文件里面websocket的IP和端口(查找ws://就能找到)


  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
呵大官人
粉丝 117
博文 17
码字总数 15799
作品 1
评论 (13)
lovyhuihui
收藏学习13
jxkshu
一般般
MrLovelyCbb
部署到服务器上,咋跑起来啊 web那层跑不起来
呵大官人

引用来自“崔波波”的评论

部署到服务器上,咋跑起来啊 web那层跑不起来

有没有什么提示?router和gateway都运行了吗?使用index.html访问的时候,gateway的日志是什么
MrLovelyCbb

引用来自“IM鑫爷”的评论

引用来自“崔波波”的评论

部署到服务器上,咋跑起来啊 web那层跑不起来

有没有什么提示?router和gateway都运行了吗?使用index.html访问的时候,gateway的日志是什么
不知道你web那层是怎么部署的,我用的lnmpa 。。谢谢你的回复。
呵大官人

引用来自“IM鑫爷”的评论

引用来自“崔波波”的评论

部署到服务器上,咋跑起来啊 web那层跑不起来

有没有什么提示?router和gateway都运行了吗?使用index.html访问的时候,gateway的日志是什么

引用来自“MrLovelyCbb”的评论

不知道你web那层是怎么部署的,我用的lnmpa 。。谢谢你的回复。
其实很简单啊,这个聊天室的例子,可以不需要web的,,直接用浏览器打开index.html就可以了!
呵大官人

引用来自“IM鑫爷”的评论

引用来自“崔波波”的评论

部署到服务器上,咋跑起来啊 web那层跑不起来

有没有什么提示?router和gateway都运行了吗?使用index.html访问的时候,gateway的日志是什么

引用来自“MrLovelyCbb”的评论

不知道你web那层是怎么部署的,我用的lnmpa 。。谢谢你的回复。
我重文章重新修改了一次,两个标记红色的地方,你要修改的。。 1、config.lua里面的FASTCGI_ROOT,这是聊天室gateway.php的路径 2、index.html里面的服务器host与port(查找ws://)
MrLovelyCbb

引用来自“IM鑫爷”的评论

引用来自“崔波波”的评论

部署到服务器上,咋跑起来啊 web那层跑不起来

有没有什么提示?router和gateway都运行了吗?使用index.html访问的时候,gateway的日志是什么

引用来自“MrLovelyCbb”的评论

不知道你web那层是怎么部署的,我用的lnmpa 。。谢谢你的回复。

引用来自“IM鑫爷”的评论

我重文章重新修改了一次,两个标记红色的地方,你要修改的。。 1、config.lua里面的FASTCGI_ROOT,这是聊天室gateway.php的路径 2、index.html里面的服务器host与port(查找ws://)
http://120.26.57.166/fooking/example/chat/index.html 我这边还是连不上,不知道是啥原因呢? index 改成了 ws://127.0.0.1:9001
呵大官人

引用来自“IM鑫爷”的评论

引用来自“崔波波”的评论

部署到服务器上,咋跑起来啊 web那层跑不起来

有没有什么提示?router和gateway都运行了吗?使用index.html访问的时候,gateway的日志是什么

引用来自“MrLovelyCbb”的评论

不知道你web那层是怎么部署的,我用的lnmpa 。。谢谢你的回复。

引用来自“IM鑫爷”的评论

我重文章重新修改了一次,两个标记红色的地方,你要修改的。。 1、config.lua里面的FASTCGI_ROOT,这是聊天室gateway.php的路径 2、index.html里面的服务器host与port(查找ws://)

引用来自“MrLovelyCbb”的评论

http://120.26.57.166/fooking/example/chat/index.html 我这边还是连不上,不知道是啥原因呢? index 改成了 ws://127.0.0.1:9001
我把ws改成120.26.57.166:9001,能连上,而且websocket握手也成功了,说明fooking已经启动成功了,但是发消息没有返回!你看一下日志输出什么。也可能是php路径不对,你看一下config.lua里面的FASTCGI_ROOT。还有你的fpm是以socket方式还是用unix domain socket启动的,如果是unix domain socket,你就需要修改BACKEND_SERVER..这些跟nginx的配置基本都差不多,只是变量名不一样而已。
MrLovelyCbb

引用来自“IM鑫爷”的评论

引用来自“崔波波”的评论

部署到服务器上,咋跑起来啊 web那层跑不起来

有没有什么提示?router和gateway都运行了吗?使用index.html访问的时候,gateway的日志是什么

引用来自“MrLovelyCbb”的评论

不知道你web那层是怎么部署的,我用的lnmpa 。。谢谢你的回复。

引用来自“IM鑫爷”的评论

我重文章重新修改了一次,两个标记红色的地方,你要修改的。。 1、config.lua里面的FASTCGI_ROOT,这是聊天室gateway.php的路径 2、index.html里面的服务器host与port(查找ws://)

引用来自“MrLovelyCbb”的评论

http://120.26.57.166/fooking/example/chat/index.html 我这边还是连不上,不知道是啥原因呢? index 改成了 ws://127.0.0.1:9001

引用来自“IM鑫爷”的评论

我把ws改成120.26.57.166:9001,能连上,而且websocket握手也成功了,说明fooking已经启动成功了,但是发消息没有返回!你看一下日志输出什么。也可能是php路径不对,你看一下config.lua里面的FASTCGI_ROOT。还有你的fpm是以socket方式还是用unix domain socket启动的,如果是unix domain socket,你就需要修改BACKEND_SERVER..这些跟nginx的配置基本都差不多,只是变量名不一样而已。
嗯,好的,谢谢回复,我改下试试看。能加下你qq吗?
呵大官人

引用来自“IM鑫爷”的评论

引用来自“崔波波”的评论

部署到服务器上,咋跑起来啊 web那层跑不起来

有没有什么提示?router和gateway都运行了吗?使用index.html访问的时候,gateway的日志是什么

引用来自“MrLovelyCbb”的评论

不知道你web那层是怎么部署的,我用的lnmpa 。。谢谢你的回复。

引用来自“IM鑫爷”的评论

我重文章重新修改了一次,两个标记红色的地方,你要修改的。。 1、config.lua里面的FASTCGI_ROOT,这是聊天室gateway.php的路径 2、index.html里面的服务器host与port(查找ws://)

引用来自“MrLovelyCbb”的评论

http://120.26.57.166/fooking/example/chat/index.html 我这边还是连不上,不知道是啥原因呢? index 改成了 ws://127.0.0.1:9001

引用来自“IM鑫爷”的评论

我把ws改成120.26.57.166:9001,能连上,而且websocket握手也成功了,说明fooking已经启动成功了,但是发消息没有返回!你看一下日志输出什么。也可能是php路径不对,你看一下config.lua里面的FASTCGI_ROOT。还有你的fpm是以socket方式还是用unix domain socket启动的,如果是unix domain socket,你就需要修改BACKEND_SERVER..这些跟nginx的配置基本都差不多,只是变量名不一样而已。

引用来自“MrLovelyCbb”的评论

嗯,好的,谢谢回复,我改下试试看。能加下你qq吗?
304463400,或者加群:321489181
MrLovelyCbb

引用来自“IM鑫爷”的评论

引用来自“崔波波”的评论

部署到服务器上,咋跑起来啊 web那层跑不起来

有没有什么提示?router和gateway都运行了吗?使用index.html访问的时候,gateway的日志是什么

引用来自“MrLovelyCbb”的评论

不知道你web那层是怎么部署的,我用的lnmpa 。。谢谢你的回复。

引用来自“IM鑫爷”的评论

我重文章重新修改了一次,两个标记红色的地方,你要修改的。。 1、config.lua里面的FASTCGI_ROOT,这是聊天室gateway.php的路径 2、index.html里面的服务器host与port(查找ws://)

引用来自“MrLovelyCbb”的评论

http://120.26.57.166/fooking/example/chat/index.html 我这边还是连不上,不知道是啥原因呢? index 改成了 ws://127.0.0.1:9001

引用来自“IM鑫爷”的评论

我把ws改成120.26.57.166:9001,能连上,而且websocket握手也成功了,说明fooking已经启动成功了,但是发消息没有返回!你看一下日志输出什么。也可能是php路径不对,你看一下config.lua里面的FASTCGI_ROOT。还有你的fpm是以socket方式还是用unix domain socket启动的,如果是unix domain socket,你就需要修改BACKEND_SERVER..这些跟nginx的配置基本都差不多,只是变量名不一样而已。

引用来自“MrLovelyCbb”的评论

嗯,好的,谢谢回复,我改下试试看。能加下你qq吗?

引用来自“IM鑫爷”的评论

304463400,或者加群:321489181
需要答案,答案是啥啊?
gongmaolan
我觉得这种东西自己开发太麻烦了,就别自己捣鼓了,找个第三方,方便,GoEasy就挺不错的,我昨天试了一下,代码简洁易懂,几分钟我就洗了一个自己的实时推送功能;官网: http://goeasy.io/
×
呵大官人
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: