首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用JavaScript与Web服务器进行交互

如何使用JavaScript与Web服务器进行交互
EN

Stack Overflow用户
提问于 2011-04-21 14:08:53
回答 1查看 10.2K关注 0票数 4

我正在尝试开发一个使用AppWeb开源web服务器的交互式聊天应用程序。

我需要一些机制,使Web服务器能够发送更新的消息到客户端,以便当远程用户发送的消息,将在客户端自动更新。

有一些方法可以使用HTML5 Web套接字和服务器发送的事件来完成此操作。

但是我们只需要用HTML和JavaScript实现它,而不是用HTML5。

因此,我需要一些池机制,以保持池我的Web服务器的新事件。

那么,我应该如何使用Sockets在Javascript中编写池化机制呢?

它应该如何在服务器端实现?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2011-04-21 14:39:38

还有另一种将消息从服务器发送到客户端的技术。为此,您必须使用iframe,它连接到PHP脚本(或您在服务器端使用的任何技术),该脚本不会关闭连接。然后,每当必须通知客户端某些事情时,PHP脚本都会发送JavaScript消息。在每条消息之后,服务器都会刷新输出流,以确保数据确实找到了到达客户端的路径,而不是被某个输出缓冲区缓存。以下是加载到iframe中的PHP脚本的一小段示例代码(未经过测试且不完整,只是为了显示基本信息):

代码语言:javascript
复制
<html>
  <body>
    <script type="text/javascript">

      function receiveMsg(data)
      {
          // Do something with the data, for example send it to some function
          // in the parent frame (Where your chat application lives)
      }

      <?php

      while (true) // You may also implement some abort state which should
                   // be checked here
      {
          $data = waitForData(); // This is your magic function on the server
                                 // which waits for data to be send to the client
          echo "receiveMsg('" . $data . "');"; // Let's say data is just a string.
                                             // You may want to use JSON instead
          flush();
      }
      ?>
    </script>
  </body>
</html>

这种方法的优点是它不依赖于轮询。因此,您不必每隔x秒向服务器发送一次请求。当您在服务器端做正确的事情时,由一个用户发送的消息将被其他用户尽可能快地接收到,而不是延迟x秒。缺点是每个聊天用户都有一个永久的HTTP连接。但是,与每个聊天用户每分钟数十个完整的HTTP请求相比,这可能需要更少的服务器资源。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5740226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档