# Rain在线聊天室 **Repository Path**: rainweb/RainZaiXianLiaoTianShi ## Basic Information - **Project Name**: Rain在线聊天室 - **Description**: 使用PHP开发的在线聊天室,可以方便的在线聊天,支持更换头像,留言,我还添加了机器人的功能,可以与机器人进行时时聊天,使聊天室平时不那么枯燥 - **Primary Language**: PHP - **License**: Not specified - **Default Branch**: master - **Homepage**: http://chat.rain1024.com - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2017-12-15 - **Last Updated**: 2024-04-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 关于增加聊天机器人功能的说明 ### 昨天增加了聊天机器人的功能,以前如果有人进入聊天室,因为我不是经常在,大多说几句话就退出了,这次可以和聊天室里的机器人聊天,还能测试聊天室里的bug,机器人如下图。 ![](http://cos.rain1024.com/blog/netword/web47.jpg) ## 简介 ## Rain在线聊天室是我很久之前就想做的一个东西,在QQ或者一些其他平台上,有些东西是不能乱说的,因为有关键词的筛查,而其他的聊天软件使用起来比较麻烦,所以我想写一个在线的即时聊天室,打开就可以说话,整个功能就搭建在我的服务器上,不怕什么筛查,更不会有社区送温暖,开门有快递,你的水表坏了,你有外卖等情况发生。 ## 整个功能并不复杂,只是在消息的传送和刷新上有些麻烦,必须保证聊天记录的准确和同步性,调试了很多bug,还有就是用户列表的显示,用户状态的判断,这一块非常麻烦,我一直在思考一种高效实时的检测方式,现在只是一个简单请求方式,我会继续慢慢完善。截图和开发日志放在下面。 # 聊天室我已经放到服务器里,有想要尝试的可以直接访问[http://chat.rain1024.com](http://chat.rain1024.com) ## 开发日志 #### 更新说明:1.修改了遍历数据库数量的操作,以前是直接提取出来所有数据,然后计算,得到的数量就直接作为最大id,但是如果有id被删除,这样就会出错,这个bug现在被修改为获取列表中最后一个数据的id值,2.修改了登录时添加用户后没有得到id的bug,以前一直没有发现,今天调试的时候才发现,我以为在添加数据后就会返回所添加数据的id,但其实返回的是boolean值,用于判断是否添加成功,现在已经修改了,直接在添加后查找到这条数据,3.将轮询的时间加长,4.添加了用户进入时的欢迎语,并可以自行根据在线时长和状态判断,5.最最关键的是加入了聊天机器人的功能,当然只是接口,但也修改了很久的这个接口,聊天时可以选择和机器人说话,机器人能够自动回复,这个功能很强大,很好玩 #### 更新说明:1.重写了请求函数,增加了html转义的安全验证,2.增加了留言板功能,3.可以修改头像了 #### 2.增加了公告栏,可以显示聊天室的注意事项,和更新说明等内容,方便交流,3.增加了留言板,有问题可以随时留言,4.有用户登录时,会发邮件通知我,方便了对聊天室的关注,因为这几天我都忘了,没想到真的有人用聊天室,所以没来得及修改bug #### 更新说明:本次修复了js中提取json时的evel函数,这个函数会导致游览器报错,2 #### 更新了说明文档 #### 更新了在线用户列表显示功能,可以实时的更新在线的用户,超时不说话的,会被认为已经离线,如果继续超过一定时间,则系统将会终结账号,还可以手动点击来刷新在线用户的列表。修复了在发送消息的时候,有时会重复出现两次,但数据库中只出现了一次记录的bug,因为在发送消息的时候会请求系统的聊天记录,而此时正好和页面自动请求发生了重合,导致信息被请求了多次 #### 更新说明:添加了数据库,支持聊天记录的保存,用户每次进入聊天室都需要登录,输入用户名即可,系统会自动分配一个头像。使用limint,和count,在每次进入系统,都会自动显示上一次的前十条聊天记录,聊天时每提交发言,都会请求一遍系统中的聊天记录,使用轮播技术,系统会每隔一段时间自动请求聊天记录 #### 项目开始开发,基础的thinkphp框架 ## 聊天室截图 ![](http://cos.rain1024.com/blog/php/php24.jpg) ![](http://cos.rain1024.com/blog/php/php25.jpg)