【问题标题】:alert message when database updated数据库更新时的警报消息
【发布时间】:2009-12-26 06:40:06
【问题描述】:

我正在用 php 创建一个聊天应用程序。

目标: 当 user1 邀请 user2 时,user2 想要得到 user1 已邀请他的警报或弹出消息。

我所做的是-

user1 邀请时,消息存储在数据库中。在用户端我曾经检查是否 数据库是否更新。如果数据库是更新我曾经显示警报。这是我在 php 和 javascript 上完成的,但不是一直都在工作。

这是一个好方法吗?还有其他方法吗?

【问题讨论】:

    标签: php javascript chat


    【解决方案1】:

    使用Ajax 定期向服务器发送请求。响应将包含用户拥有的任何邀请。响应可能在 JSON 中,可以在 JavaScript 中轻松评估。

    【讨论】:

      【解决方案2】:

      所有客户端都可以使用 jquery 并定期发送以下请求:

      function checkIfIAmInvited()
      {
           jQuery.ajax({
             type: "POST",
             url: "some.php",
             data: "name=currentUser&",
             success: function(msg){
               if(msg.indexOf('uninvited') !== -1 )
               {
                  alert( "You have been invited by " + msg );
                  //Method to do stuff once I am invited
                  iAmInvitedMethod();
               }
           });
      }
      

      要定期调用上述代码,您可以在 jquery/javascript 中使用以下代码。这将是定期拨打电话并将回复回复给您。只要响应不包含“uninvited”字符串,它就会发出警报并调用 post 方法函数。

      这可以用下面的代码重复调用。

      window.setInterval("checkIfIAmInvited()", 5000);
      

      这将每 5 秒检查一次是否有任何邀请。或者,为了更好地控制 jquery 插件,如 Timer 可用于重复执行某些操作。

      【讨论】:

        【解决方案3】:

        使用(至少)两次数据库访问是处理实时聊天的糟糕方式。如果您正在做一些存储的聊天,也就是消息系统,那很好。但考虑到您只需要坚持一两秒钟的文本,我会使用 SQL-Lite 或仅使用其他内存解决方案。在您的服务器上会更快更容易。

        【讨论】:

          【解决方案4】:

          对于聊天和即时消息系统,您应该研究使用基于推送的技术,例如 Comet。 this thread 中的更多信息:使用 jquery 的实现。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-09-23
            • 1970-01-01
            • 2016-02-12
            • 1970-01-01
            • 2013-07-18
            • 1970-01-01
            相关资源
            最近更新 更多