PHP分组聊天室--fooking现实

原创
2015/04/02 01:32
阅读数 1.1W

   最近也是比较忙,公司打码,回家继续打,越忙越折腾! 一个不小心半夜一点了,花了一晚上时间终于把这个分组聊天室写完了,前两天刚把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://就能找到)


展开阅读全文
打赏
3
67 收藏
分享
加载中
我觉得这种东西自己开发太麻烦了,就别自己捣鼓了,找个第三方,方便,GoEasy就挺不错的,我昨天试了一下,代码简洁易懂,几分钟我就洗了一个自己的实时推送功能;官网: http://goeasy.io/
2017/01/19 11:42
回复
举报

引用来自“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
需要答案,答案是啥啊?
2015/07/02 18:26
回复
举报
呵大官人博主

引用来自“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
2015/07/02 18:12
回复
举报

引用来自“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吗?
2015/07/02 18:07
回复
举报
呵大官人博主

引用来自“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的配置基本都差不多,只是变量名不一样而已。
2015/07/02 17:46
回复
举报

引用来自“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
2015/07/02 17:14
回复
举报
呵大官人博主

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

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

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

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

引用来自“MrLovelyCbb”的评论

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

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

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

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

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

引用来自“MrLovelyCbb”的评论

不知道你web那层是怎么部署的,我用的lnmpa 。。谢谢你的回复。
其实很简单啊,这个聊天室的例子,可以不需要web的,,直接用浏览器打开index.html就可以了!
2015/07/02 15:30
回复
举报

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

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

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

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

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

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

有没有什么提示?router和gateway都运行了吗?使用index.html访问的时候,gateway的日志是什么
2015/07/01 14:31
回复
举报
更多评论
打赏
13 评论
67 收藏
3
分享
返回顶部
顶部