【问题标题】:Which is the best way to auto refresh a chat pag这是自动刷新聊天页面的最佳方式
【发布时间】:2010-09-24 21:30:50
【问题描述】:

例如,我可以轻松地使用 javascript 每 10 秒自动刷新一次页面,但是,这是否会使页面超载,必须每 10 秒要求任何更改?有没有更有效的方法来做到这一点。有人告诉我一次,有一种方法可以让客户端等待来自服务器的响应,只有在它确实有一些变化时才发送它,例如,某个好友在聊天中写了一条文本。这真的可行吗?有没有更好的办法?

【问题讨论】:

    标签: .net refresh chat livechat


    【解决方案1】:

    为什么要刷新聊天页面?为什么不直接检查服务器以查看是否有新帖子/聊天等。如果有,请将它们附加到您的聊天框中。

    让你的计时器 (setTimeOut) 每 5 秒触发一次:

    快速伪代码:

    function updateChat()
    {
      //Query a web service on the server for new text chat
      //If successful append the chat to the chat area
    
      //Call timeout again.
      setTimeout(updateChat, 500);
    }
    

    编辑: 看到你有 .NET,我会假设你使用的是 ASP.NET。这是一个演示聊天程序的链接:

    http://trappedinhoth.blogspot.com/2009/04/ajax-jquery-chat-demo.html

    【讨论】:

    • 好的,这是一个很好的解决方案,但是对服务器的调用不是很多吗?这真的有效吗?还有其他方法吗?
    • @Giancarlo Solarino ~ google.com/search?q=premature+optimization ... 放弃吧,不要再猜测什么是负载过多了。写对了,然后看看是不是负载太大。作为参考,服务器可以为成千上万的用户处理这样的负载,而没有明显的影响。
    • 它比刷新整个页面加载效率更高。这与 Facebook 聊天的工作方式类似。
    • 顺便说一句:它是setTimeout(不是setTimeOut)。此外,5 秒是 5000 毫秒,而不是 500(即 0.5 秒)。
    • 感谢您的类型(已更正)。我确实将其设置为 500 毫秒。有时 5 秒是永远的聊天时间。
    【解决方案2】:

    您可以在服务器端应用输出缓存。这样服务器每 10 秒只需要生成 1 个答案

    【讨论】:

      【解决方案3】:

      您可以尝试在 JavaScript 中使用新的 WebSockets 技术。许多浏览器不支持它(目前只有 Firefox 4、Chrome 4 和 Safari 5 支持),但它允许与服务器的连接保持“打开”状态,然后服务器可以向客户端发送消息。更多信息:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-12
        • 1970-01-01
        • 1970-01-01
        • 2011-07-12
        • 1970-01-01
        相关资源
        最近更新 更多