Maison >développement back-end >tutoriel php >PHP分组聊天室fooking现实

PHP分组聊天室fooking现实

WBOY
WBOYoriginal
2016-06-23 13:31:181931parcourir

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

   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://就能找到)


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn