Php 两个登录用户之间的实时响应

Php 两个登录用户之间的实时响应,php,javascript,mysql,Php,Javascript,Mysql,我是PHP/MySQL的初学者,也不熟悉javascript,我想创建一个页面,一个用户可以向另一个用户发送实时请求。例如,UserA可以查看在线用户列表,并向UserB(在线)发送请求,UserB的页面将弹出警报,UserB可以选择单击是或否。UserA将收到带有B响应的弹出窗口(如果超时,则默认为否) 这通常是怎么做的?我想我的问题有两个部分: 如何记录在线/离线用户?(我需要一张桌子吗 记录登录/注销时间?) 通常如何发送消息 在2个用户之间 您可以让每个用户“轮询”(例如ajax调用)服

我是PHP/MySQL的初学者,也不熟悉javascript,我想创建一个页面,一个用户可以向另一个用户发送实时请求。例如,UserA可以查看在线用户列表,并向UserB(在线)发送请求,UserB的页面将弹出警报,UserB可以选择单击是或否。UserA将收到带有B响应的弹出窗口(如果超时,则默认为否)

这通常是怎么做的?我想我的问题有两个部分:

  • 如何记录在线/离线用户?(我需要一张桌子吗 记录登录/注销时间?)
  • 通常如何发送消息 在2个用户之间

  • 您可以让每个用户“轮询”(例如ajax调用)服务器,查看是否有新消息。但是我会检查一下或类似的框架。

    您可以让每个用户“轮询”(例如ajax调用)服务器,查看是否有新消息。但是我会检查一下或者类似的框架。

    1,当某人已经登录时,您将能够知道,您将在从数据库读取用户名/密码或密码密钥后进行登录验证,因此,一旦用户登录,您将能够在数据库中标记它,并在服务器中进行会话处理

    为此有两种方法,最先进的是使用web套接字,这样就不需要轮询,另一种方法是等待ajax/Comet等

    我的解释就像从直升机上看你的要求。。当你开始阅读上面提到的内容时,将会有更多的细节出现

    希望这能回答你的疑问
    感谢

    1,当某人已经登录时,您将能够知道,您将在从数据库中读取用户名/密码或密码密钥后进行登录验证,因此一旦用户登录,您将能够在数据库中标记它,并在服务器中进行会话处理

    为此有两种方法,最先进的是使用web套接字,这样就不需要轮询,另一种方法是等待ajax/Comet等

    我的解释就像从直升机上看你的要求。。当你开始阅读上面提到的内容时,将会有更多的细节出现

    希望这能回答你的疑问
    谢谢

    我不知道你想说什么,但我认为私人聊天就是一个很好的例子?我会假装你就是这么做的

    在适当的情况下,我会尽量提供大量的信息,而不会将其转化为完整的教程。期待大量的链接和阅读建议


    想法 应用程序的核心有一个基本思想,用户通信。您需要以某种方式从无状态、异步的HTTP世界过渡到有状态、同步的HTTP世界。有几种方法可以做到这一点

    投票 这用于重复从服务器请求信息。AJAX代表异步Javascript和XML,但不必担心XML位,这只是历史。基本上,AJAX就像从浏览器中的脚本发出常规请求,这使您能够在不刷新的情况下从服务器发送和接收数据。这对于由用户发起或可以处理延迟的情况很好。对于您的情况,您可以标记某人最后一次执行操作的时间,然后指定某个超时来决定某人何时脱机。请求的结果包含自检查后可能已到达的任何新消息

    长轮询/彗星 这是以前投票理念的延伸。对于基本AJAX的客户机启动特性,这几乎是一个明确的解决方法。Comet本质上只是AJAX,但是您可以将连接保持更长的时间,从而允许服务器向下推送信息。您可以在此处找到有关此技术的信息:。但是,该技术存在一些问题:

    • 古怪的经历。不同的浏览器将以不同的方式处理长时间打开的连接,这使得在所有浏览器中为所有用户提供一致的体验成为一个挑战
    • 断开连接。最终会出现脱节。最终,浏览器会根据请求调用
      .abort()
      ,您必须重新打开它
    • 单连接限制。HTTP/1.1标准规定,浏览器在每个服务器上一次只能同时打开一个连接。您可以通过使用多个(子)域来解决这个问题
    您必须使用与以前基本相同的技术,因为您仍然有正常使用中的断开连接。不同之处在于,服务器必须在必要时保持连接打开。根据您在后端使用的技术,这可能是琐碎的,也可能是困难的,如果不小心处理,可能会造成巨大的性能成本

    网袋 基本上是以前的解决方案,但标准化并正确实施。WebSocket的本质是,您可以向服务器发出常规请求,但要求将其升级为TCP连接。这里的“升级”一词有点误导,因为从技术上讲,它只是从连接中删除HTTP内容,而留给您原始的底层连接

    WebSocket是为持久连接而设计的,是全双工(双向通信)

    然而,有两个主要的缺点:它们是新的,这意味着支持没有那么广泛,大多数现代浏览器都支持它们,但你不能指望每个人都有最新的浏览器。需要服务器端支持。这意味着您必须拥有一个能够升级请求并高效处理它们的系统,因为这是一项新技术,支持是有限的,而且是主要的。socket.io是node.js模块,因此可能不适合您。还有其他语言/技术,但可获得的支持明显较少<