我使用PHP / MySQL和node.js(socket.io)创建了一个类似于facebook的实时聊天应用程序,但我现在面临以下问题。
场景
登录的用户有一个类似于Facebook的朋友列表,当他的朋友离开,离线,在线等时,我希望他的好友列表能够更新实时使用它,而无需重新加载整个朋友列表,例如每隔x秒使用ajax轮询。
登录用户的每个操作在网站上进行,例如更改页面,新聊天窗口,搜索或我有一个名为last_active
的列,其中包含当前更新UNIX_TIMESTAMP。
这样做是为了跟踪用户在线或离开。如果时间戳大于300秒,则用户离开。
每30秒数据库使用unix_timestamp为登录用户更新列last_online
。
这样做是为了跟踪用户在线。如果时间戳大于35秒,我们可以假设他已关闭窗口,并且将被视为离线而不是离开。
用户还可以手动将其在线状态设置为忙碌,不可见等,并将其设置为登录用户的custom_status
列。
上面的所有内容都是正常的,因为它应该提供用户总是重新加载页面以查看他的朋友有什么在线状态但我希望实时更新,而不是在重新加载整个页面或使用ajax轮询重新加载时整个朋友名单。
我正在考虑比较客户端当前的在线状态以及发生更改时将其发送到socket.io。然后,我遍历所有连接的客户端,并向所有已连接的朋友发送用户新的在线状态。
但是,我想当有1000个用户连接时会出现性能问题吗?
你会如何处理?