Car*_*bus 5 php mysql ajax chat
我正在尝试做一个Omegle.com克隆脚本,主要是出于学习目的。我在PHP / MySQL / AJAX中进行操作。
我在找到两个用户并将其连接时遇到问题。omegle的目的是“随机”连接两个用户。
我现在正在做的事情如下:
现在这有几个问题,例如:
关于聊天,每个用户都使用AJAX调用轮询服务器上的事件,我看到那个omegle而不是每秒几个HTTP请求(比如说),它发出一个请求并等待答案,这意味着PHP脚本是无限循环直到得到答案。每次循环启动时,我都使用set_time_limit(30)进行此操作。然后,在完成Ajax调用后,重新开始。这种方法正确吗?
非常感谢您的回答,谢谢,
卡洛斯
我个人认为轮询服务器和无限期地保持请求打开之间没有太大区别,因为它们都有明显的优点和缺点。两者都尝试一下,看看哪一个成本更高。如果服务器忙于处理多个客户端最终会导致新访问者出现超时错误,那么对于像您这样的聊天室来说,这并不是一个好情况。
一旦你解决了更多的问题,你可能还想研究彗星服务器甚至网络套接字,但我会首先关注让聊天/匹配功能发挥作用。
因此,如果用户可以进行多个聊天,但每次聊天它们仍然是一对一配对的,我个人会考虑一个解决方案,如果用户想要一个新的聊天(假设是自愿的),他们实际上会开始一个新的聊天会议。使每个用户对象都可以有多个(或无限)聊天会话,每个会话都像您所描述的那样:“正常;等待;聊天”。因此,如果用户 A 进入房间,他点击“就绪”按钮,这会将他的初始会话从正常更改为等待。一旦他与某人见面,就会开始一个新的“正常”会话,他可以通过点击某个按钮等将其更改为“等待”。
可能会使持续循环减少一点的一件事是简单地查询有多少可用或“等待”用户。如果为 0,则继续检查直到大于 0,而不是循环遍历房间中的所有成员以查看他们是否在等待。
再想一想,不是0,而是大于1,因为如果你有一个计算总数的方法,你等待的人也会被计算在内。