我决定为体验创建一个基于网络的聊天系统。我正在使用AJAX(jQuery),PHP和JSON的混合来传输数据。既然我已经开始考虑某些事情,那么我就会陷入困境。
现在,我使用javascript将最后加载的消息ID发布到查询数据的php文件中,并在json中回显新帖子,然后在页面上按顺序显示这些帖子。但是,日期不反映用户的当前时间。由于我使用php来获取当前时间,因此我不知道如何向用户显示考虑到其时区的正确时间。其次,我如何在这个方法中加入谁的在线列表?我可以创建一个单独的表,并在用户创建会话时更新它,并在结束会话时删除它们的名称;但如果他们没有正确关闭呢?我应该只是将他们上次发送的消息添加到表中,并且如果距离上次消息大约5分钟,则认为用户已断开连接?最后,我用来收集新帖子的方法是否有效?这有更好的方法吗?我很感激任何意见。
答案 0 :(得分:0)
这似乎有关:Determine a User's Timezone
我打算让你去那里寻找代码片段,这样你就可以给予你的赞成。
我认为Javascript是获取该数据的最佳/最简单方式。
我可能会做的是使用GMT或其他一些固定时区来处理所有服务器内容,然后根据时区访问浏览器,只需使用js进行调整即可。要么只是在对话开始时收集一次,要么相应地调整输出。无论哪种方式都可能有优势。
编辑: 哦,是的,关于“谁在网上”,我认为你正朝着正确的方向前进。我可能会建议2个列表。 “谁活跃”和“谁最近活跃”
这样你可以在5分钟后让人们不活动,并认为他们在10或之后断开连接。我猜它差不多,但似乎对我来说更准确。
另一种选择是设置ajax请求,每分钟左右自动触发一次请求。当他们停止时,你知道用户已经离开了。