相关疑难解决方法(0)

如何实施基本的"长轮询"?

我可以找到很多关于Long Polling如何工作的信息(例如,这个这个),但没有关于如何在代码中实现它的简单示例.

我所能找到的只是依赖于Dojo JS框架的cometd,以及一个相当复杂的服务器系统.

基本上,我将如何使用Apache来处理请求,以及如何编写一个简单的脚本(例如,在PHP中),它将"长时间轮询"服务器以获取新消息?

该示例不必是可扩展的,安全的或完整的,它只需要工作!

php comet http

766
推荐指数
12
解决办法
28万
查看次数

如何使用Jquery/PHP实现聊天室?

我正在寻找使用PHP/Javascript(Jquery)实现聊天室,同时具有群聊和私聊功能.

问题是如何以自然的方式不断更新界面,以及如何在私人聊天中显示"X正在输入..."消息.

显而易见的方式似乎是每隔x秒/毫秒javascript ping服务器并在最后一次ping和现在之间获取新消息列表.然而,这可能会使界面看起来有点不自然,如果突然聊天室充斥着5条消息.我希望每条消息都会在输入时显示.

有没有办法使javascript保持与服务器的连续连接,服务器将任何新消息推送到此连接,并且javascript将它们添加到接口,以便它们同时出现,几乎在服务器收到它们之后?

我知道有一些轮询选项需要你安装一些apache模块等,但我很糟糕的系统管理员,因此我更喜欢在共享主机帐户或php上有一个非常容易安装的解决方案/ mysql唯一的解决方案.

javascript php ajax jquery ajax-polling

25
推荐指数
2
解决办法
3万
查看次数

HTML5 Server-Sent Events原型设计 - 模糊错误和重复轮询?

我想它们符合我的要求完美,看起来他们应该是简单的实现获得与服务器端事件交手,但我不能让过去一个模糊的错误,什么样子反复被关闭了连接并重新-opened.我尝试的一切都基于这个和其他教程.

PHP是一个单独的脚本:

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

function sendMsg($id, $msg) {
  echo "id: $id" . PHP_EOL;
  echo "data: $msg" . PHP_EOL;
  echo PHP_EOL;
  ob_flush();
  flush();
}

$serverTime = time();
sendMsg($serverTime, 'server time: ' . date("h:i:s", time()));
?>
Run Code Online (Sandbox Code Playgroud)

并且JavaScript看起来像这样(在身体负载上运行):

function init() {

    var source;
    if (!!window.EventSource) {
        source = new EventSource('events.php');
        source.addEventListener('message', function(e) {
            document.getElementById('output').innerHTML += e.data + '<br />';
        }, false);
        source.addEventListener('open', function(e) {
            document.getElementById('output').innerHTML += 'connection opened<br />';
        }, false);
        source.addEventListener('error', function(e) {
            document.getElementById('output').innerHTML += 'error<br />'; …
Run Code Online (Sandbox Code Playgroud)

apache html5 server-push server-sent-events

13
推荐指数
1
解决办法
1万
查看次数

为多人JavaScript游戏实现后端服务器的最简单方法?(COMET/longpolling)

我一直在用JavaScript编写游戏,现在是时候让它成为多人游戏了.我想使用AJAX长轮询来获得当前的游戏状态,以及实现大厅.

服务器只需要执行基本功能,比如将游戏状态存储在mysql数据库中,检索游戏状态,并格式化记分板.

我认为用PHP编写它是最简单的,但由于它会产生的apache进程数量,这将是一个坏主意.

您有什么推荐的吗?我正在寻找最直接的方法.

编辑:StreamHub似乎很好,但社区版只允许10个并发用户.

comet web-frameworks long-polling

12
推荐指数
1
解决办法
3298
查看次数

高效地重新加载数据/将数据从服务器推送到客户端

在将数据从Web服务器重新加载到前端时,我正在寻找"走的路"(即最有效,最常用,最普遍接受的方式).在最终的应用程序中,我将有几个输出字段,其中必须写入数据,例如:

在此输入图像描述

在最终应用程序中,数据流将彼此不同.这些行必须从服务器重新加载新的最新数据.

我一直在考虑使用Ajax请求来像每秒更新,但必须有另一种方法来做到这一点.Ajax请求将导致大量数据流量.此外,当使用Facebook聊天时,您不必每秒钟等待,几乎立即收到聊天.但是,当我使用Mozilla Firefox的开发人员工具时,我没有看到任何Ajax轮询请求.这让我想到是否会有不同的方式来做到这一点.

我查看了Node.js,但看起来我的主机无法实现.

我听说有人在谈论Ajax Push,我应该使用什么?如果是这样,你能给我一个基本的用法例子吗?

如果没有,那么当拥有多个必须在一秒钟内重新加载的数据流时,会有什么方法呢?

要求是速度低数据流量.因此,我认为不能连续轮询服务器,因为这会产生巨大的开销.

我认为它没有任何重要性,但我在后端使用PHP5.3,在前端使用jQuery 1.9.1的JavaScript.

javascript php client-server comet stream

8
推荐指数
1
解决办法
2万
查看次数

AJAX /反向AJAX:轮询还是推送?

我正在研究AJAX,因为我正在使用Javascript和PHP制作实时应用程序.它需要能够在不刷新页面的情况下进行更新并实时更新.

我尝试使用setInterval()轮询服务器但是为了快速我必须每秒都有它.它似乎使用了大量的带宽.它确实有效,我有一个计划与我的托管服务提供商'无限带宽'.虽然网站上有很多压力,但我想使用Push技术.

学习如何设置Push非常困难.从我设法弄清楚,你必须托管某种类型的推送服务器或彗星服务器.我也研究过websockets,但你也必须自己主持它.当我没有服务器计算机时,我不明白该怎么做,我的托管服务提供商网站上没有关于此的文档.

特定主机提供商是否为您托管推送服务器?有没有办法获得服务器而不必托管它?这似乎是一个比投票更好的选择,但同时它似乎非常令人困惑.

ajax comet real-time reverse-ajax ajax-polling

7
推荐指数
1
解决办法
6448
查看次数

PHP/JS进度条

我正在尝试创建一个页面,它将从复杂的数据库查询和php解析生成结果集......但这主要是在这一点上......主要的一点是,这需要一两分钟才能完成,并且我希望显示一个进度条而不是一个通用的gif动画"loading ..."图片.

故障将是......

  • 用户打开页面A.
  • 页面A请求来自页面B的数据(很可能是AJAX).
  • 页面B处理数据库中的100000多个条目并解析它们.
  • 页面A显示了一个进度条,大致显示了该过程的进度
  • 页面B返回结果集.
  • 页面A显示结果集.

我知道如何将数据返回到ajax查询,但我的问题是我不知道如何连续返回数据以显示进程的状态(例如,扫描的行数百分比).

我查看了EventSource/Server-Sent-Events,它显示了承诺,我只是不太确定如何使其正常工作,或者是否有更好的方法来实现它.

我已经尝试制作一个快速的小模型页面,只使用EventSource工作正常,但当我将其拆分为eventSource调用(监视会话变量以进行更改的页面)和ajax请求(实际数据发送/它崩溃了.

我可能错过了一些明显的东西,或做了一些愚蠢的错误,但这是我所拥有的大部分内容......任何帮助,建议,提示,甚至完全其他方法的建议都会很棒:)

用户页面:

<!DOCTYPE html>
<html>
<head>
    <title>Dynamic Progress Bar Example</title>
    <script src="script.js"></script>
</head>
<body>
    <input type="button" value="Submit" onclick="connect()" />
    <progress id='progressor' value="0" max='100' style=""></progress>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

使用Javascript

 var es;

   function connect() {
       startListener();
       $.ajax({
           url: "server.php",
           success: function() {
               alert("Success");
           },
           error: function() {
               alert("Error");
           }
       });
   }

   function startListener() {
       es = new EventSource('monitor.php');

       //a message is received
       es.addEventListener('message', function(e) {
           var result = JSON.parse(e.data);

           if (e.lastEventId …
Run Code Online (Sandbox Code Playgroud)

javascript php ajax jquery server-sent-events

7
推荐指数
1
解决办法
2089
查看次数

AJAX长轮询,提高效率

有一段时间我一直在玩我的通知系统长轮询的想法,但我从来没有想过一种方法来使我的后端更有效率.

我见过的大多数实现都保持连接打开,并且php每隔几秒查询数据库服务器以查看是否已经添加了新数据.这让我感到震惊,因为javascript重复轮询服务器.

在任何一种情况下,我的数据库服务器都被击中了数万次,这是不可取的.

是否有任何系统可以"警告"执行/休眠长轮询脚本到新数据?

php

6
推荐指数
1
解决办法
1221
查看次数

如何使用长轮询(最好没有Comet或node.js)?

假设我正在同步HTML页面上的文本,存储在localStorage中,从计算机A到计算机B.当用户编辑计算机A上的文本时,我向服务器发送请求,并告诉它更改了哪些文本.有什么方法可以让服务器告诉计算机B有新文本,没有计算机B必须继续检查?我读过有关Comet的内容,但我正在尝试不使用任何库.有办法吗?另外,如果你要推荐Comet,你能举一个使用普通JavaScript和Comet的简单例子吗?

我有个主意,但我不知道它是否有效.在计算机B上,我发送一次请求,让服务器的文件继续延迟响应,直到有一些新文本.这样,它就像长轮询,但请求最终会超时.如果有一种方法可以将超时设置为永远,那么这将变得更加容易.那么,任何人都有任何想法?

PS-我想只使用JavaScript和PHP,并尝试避免使用库.尽管如此,如果您知道可以使用JS和PHP执行此操作的库,请告诉我.

此外,我知道有这样的问题,但我发现那里的答案并不令人满意.

哦,如果有人知道这里的聊天是如何工作的,你能告诉我吗?

tl; dr:我想从服务器向HTML页面发送请求,或者让HTML发送一个请求,该请求保持活动状态直到创建适当的响应.

javascript php comet

6
推荐指数
1
解决办法
856
查看次数

Javascript和PHP倒计时器为每个人显示相同的计时器

我有生成倒计时器所需的脚本,该计时器有一个启动和恢复按钮.我试图做的是在一个控制另一页上的计时器的页面上有启动,停止和重置按钮.因此,如果用户X访问page.html,他们将看到一个0的计时器.管理员X访问admin.html,他们看到计时器为0,但他们也有一个启动,停止和重置按钮.当管理员点击按钮时,page.html上的计时器开始倒计时.如果另一个用户在计时器倒计时时访问该页面,他们将看到计时器当前所在的位置.如果有人有任何代码想法,我可以参考这个网站上的其他答案,或者我需要的代码,我将非常感激.

---真实的场景我们有skype的人正在做一个节目,他们需要知道什么时候休息一下.这个想法是制作人可以按下一个按钮,开始倒数计时器让他们知道他们有60秒直到休息.我在网页上想要这个的原因是因为页面上还有其他东西正在skype上的人正在关注.所以我想要一些他们不能错过的东西.我可以访问一个SQL服务器,并可以同时执行php和javascript.我猜我需要做两者的某种组合.

更新感谢大家的帮助.

我正在更新这个,因为我意识到我可能会让事情变得比他们现在需要的更复杂.每30分钟休息一次,所有节目将从一小时开始或在30分钟后开始.我终于找到了完美的剧本.虽然由于正常的时钟漂移可能略微偏离,但无论谁进入页面,它实际上都应该显示相同.

<script>
 function addZero(i)
{
if (i<10)
  {
   i="0" + i;
  }
 return i;
 }
 setInterval(function() {
   function addZero(i)
{
if (i<10)
  {
  i="0" + i;
  }
return i;
}
    var d = new Date();
    var s =(d.getSeconds());
    var m =(d.getMinutes());
    var x = document.getElementById("timer");
    var c = addZero(30 - m) + ":" + addZero(60 - s);
    var d = addZero(60 - m) + ":" + addZero(60 - s);
    if (m < 30) {
        t = c …
Run Code Online (Sandbox Code Playgroud)

javascript php mysql timer dynamic

6
推荐指数
1
解决办法
5729
查看次数