【问题标题】:Chat App with php, Jquery使用 php、Jquery 聊天应用程序
【发布时间】:2013-09-05 13:39:34
【问题描述】:

我想用 php & jquery 制作一个聊天应用程序。但是客户端可见的jquery脚本和另一个问题是每次都需要通过调用间隔方法来更新聊天显示面板。所以我的问题是,有没有其他方法可以开发像 gmail 聊天应用程序这样的聊天应用程序。 因为 gmail 聊天是显示存在。当用户离线时自动显示离线状态。当用户在聊天框中输入文本时,会立即显示在聊天显示中。所以我想喜欢那个应用程序。

请指导我....

谢谢你,

【问题讨论】:

  • 阅读有关长轮询和 ajax 请求/网络服务的信息

标签: php jquery chat livechat


【解决方案1】:

您可以使用 WebSockets 做到这一点。有一些很酷的 WebSockets 工具,例如:

使用 WebSockets,您可以将收到的消息附加到聊天日志中,而不是像您正在做的那样更新整个事情。

如果您选择(或必须)继续向服务器请求新消息,因为并非所有托管服务提供商都允许使用 WebSocket,以下是您可能会发现对改进聊天应用有用的一些提示:

  1. 将最后收到的消息 id 存储在客户端,这样当您向服务器请求新消息时,您可以将这个 id 发送给它,它只会向您发送您尚未收到的消息,从而避免不必要的交通。

  2. 在服务器端,记录客户端上次请求新消息的时间,以便您可以定义超时以检测用户断开连接。

  3. 为避免您的服务器或客户端因请求过多而无法处理,请在定义下一个请求的间隔时考虑服务器响应您上一个请求所花费的时间,如下所示:

    1. 客户端请求消息
    2. 服务器在 100 毫秒内回复
    3. 客户端在再次请求之前等待 100 毫秒
    4. 服务器在 200 毫秒内回复
    5. 客户端在再次请求之前等待 200 毫秒
    6. ...

【讨论】:

    【解决方案2】:

    为了在不轮询的情况下实时更新状态和消息,需要使用websocket连接。

    这是一个使用 Applozic jquery chat plugin 构建聊天的 jsfiddle,它使用 websocket。

    https://jsfiddle.net/devashishmamgain/L68teL67/

       (function(d, m){var s, h;       
       s = document.createElement("script");
       s.type = "text/javascript";
       s.async=true;
       s.src="https://apps.applozic.com/sidebox.app";
       h=document.getElementsByTagName('head')[0];
       h.appendChild(s);
       window.applozic=m;
       m.init=function(t){m._globals=t;}})(document, window.applozic || {});
    
    
    
      window.applozic.init({userId: 'devashish', appId: 'f769902edce1e93b6d03a1d5f', desktopNotification: true,  notificationIconLink: "https://www.applozic.com/resources/images/applozic_logo.gif"});
    

    【讨论】:

      【解决方案3】:

      看看下面的问题..

      Javascript based XMPP chatclient using strophe js - Examples and tutorials?

      您可以在下面的工作 github 代码上找到使用 stropher js for XMPP 协议与聊天相关的要求。

      https://github.com/metajack/profxmpp

      请看第 06 章演示 (GAB Tut)

      它将满足您与

      相关的所有要求
      • 一对一聊天。

      • 花名册(好友名单),

      • 发送好友请求,

      • 即将获得批准。

      • 开始一对一聊天等...

        所有重要的演示也包括在内

      让我知道您对此演示有任何疑问。 :) :)

      【讨论】:

        【解决方案4】:

        是的,如果您使用 PHP 从服务器端获取数据,那么您需要定期轮询并检查新消息。这会在服务器端造成不必要的负载,并且难以扩展,因为即使没有新消息我们也会继续轮询。

        这个问题可以通过使用像 websocket 这样的推送技术而不是轮询来解决。我们的产品ChatCamp 使用推送技术实时传递消息,并且高效且可扩展。您可以使用我们的 ChatCamp JavaScript SDK 快速创建一个 jQuery 聊天应用程序 - https://chatcamp.io/blog/jquery-chat/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-11-06
          • 1970-01-01
          • 2012-01-28
          • 2014-04-09
          • 1970-01-01
          • 2023-01-28
          • 2015-08-18
          • 2017-07-26
          相关资源
          最近更新 更多