1

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

请指导我......

感谢您,

4

4 回答 4

4

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

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

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

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

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

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

    1. 客户端请求消息
    2. 服务器在 100 毫秒内回复
    3. 客户端在再次请求之前等待 100 毫秒
    4. 服务器在 200 毫秒内回复
    5. 客户端在再次请求之前等待 200 毫秒
    6. ...
于 2013-09-05T15:02:20.320 回答
2

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

这是一个使用 Websocket 的Applozic jquery 聊天插件构建聊天的jsfiddle 。

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"});
于 2016-09-26T08:02:55.587 回答
1

看看下面的问题..

使用 strophe js 的基于 Javascript 的 XMPP 聊天客户端 - 示例和教程?

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

https://github.com/metajack/profxmpp

看 chap :06 demo (GAB Tut)

它将满足您所有相关的要求

  • 一对一聊天。

  • 名册列表(朋友列表),

  • 发送好友请求,

  • 在即将到来的请求批准。

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

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

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

于 2013-09-10T05:56:43.623 回答
0

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

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

于 2018-06-04T18:49:54.373 回答