PHP + MySQL + Socket.io – 实时在线状态的朋友

我使用PHP / MySQL和node.js(socket.io)创build了一个类似于facebook的实时聊天应用程序,但是我现在面临以下问题。

脚本
login的用户有一个类似Facebook的朋友列表,当他的任何朋友离开,离线,在线等我想他的朋友列表实时更新,而无需重新加载整个朋友列表,例如ajax轮询每x秒。

login用户在网站上进行的每一个操作 ,比如页面的变化,新的聊天窗口,search,或者我有一个名为last_active ,用当前的unix_timestamp进行更新。
这是为了跟踪用户在线或离开。 如果时间戳大于300秒,则用户离开。

每三十秒钟一次 ,数据库last_online用户login的unix_timestamp更新last_online列。
这是为了跟踪用户在线。 如果时间戳大于35秒,我们可以认为他已经closures了窗口,将被视为离线,而不是离开。

用户也可以手动设置他的在线状态为繁忙,不可见等,并且这被设置为login用户的列的custom_status

上面的一切工作,因为它应该提供,用户总是重新加载页面,看看他的朋友有什么在线状态,但我希望这是实时更新,而不是当重新加载整个页面或使用Ajax轮询来重新加载整个朋友列表。

我正在考虑在客户端比较当前的在线状态,当发生变化的时候发送到socket.io。 然后,我遍历所有连接的客户端,并向所有连接的朋友发出用户新的在线状态。

但是,我想这将有性能问题,当说例如1000个用户连接?

你将如何处理?