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个用户连接?
你将如何处理?
- 在最新的Openshift更新之后,Socket.IO客户端无法连接到Socket.IO nodejs服务器
- 当服务器脱机时,socket.io发射
- 在NodeJS中的Socket.io
- AngularJS&Socket.IO – 从Service(发送到此处)到Controller的返回值是undefined || 承诺,asynchronous
- 奇怪的行为与套接字时重新启动节点 – 任何想法?
- 在azure上缩放nodejs,socket.io和mongodb
- 套接字 – 没有数据显示在客户端网站上
- Sails.jssockets。 好的和坏的方面。 与socket.io不同
- 是否有可能从socket.io发射器广播