Javascript 使用php curl进行长轮询

Javascript 使用php curl进行长轮询,javascript,php,ajax,curl,Javascript,Php,Ajax,Curl,我下面介绍使用HTTP长轮询的SpringMVC聊天客户端 我的web服务器位于端口7555,我需要能够从端口80(浏览器)向端口7555发出HTTP长轮询请求,因此我创建了一个调用我的web服务的PHP脚本 <?php $index = $_GET["index"]; echo $index; echo $index2; $urlVar = "http://localhost:7555/test?" . $index . $index2; $ch = curl_init(); cur

我下面介绍使用HTTP长轮询的SpringMVC聊天客户端

我的web服务器位于端口7555,我需要能够从端口80(浏览器)向端口7555发出HTTP长轮询请求,因此我创建了一个调用我的web服务的PHP脚本

<?php
$index = $_GET["index"];
echo $index;
echo $index2;

$urlVar = "http://localhost:7555/test?" . $index . $index2;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $urlVar);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PORT, 7305);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_exec($ch)
?>

PHP文件位于我的本地主机中。这似乎不起作用,因为JavaScript似乎没完没了地调用PHP(调用URL)。我是否正确使用PHP curl进行长轮询?因为我是curl中的HTTP调用,所以我需要在JavaScript中进行Ajax调用吗?

因为它不允许发送(这也适用于端口),所以您需要执行这个PHP relais操作

永远不会少。一次又一次地请求相同的请求(轮询)几乎是正确的,但是您的web服务应该保持连接打开,直到它有一些新信息或者请求超时(长轮询)


使用
CURLOPT\u RETURNTRANSFER
您的web服务返回什么(Http状态正常?任何内容?

您需要回显
curl\u exec($ch)


URL中的端口与cURL中调用的端口不同。您已设置了RETURNTRANSFER,但未捕获结果<代码>echo curl\u exec($ch)丢失。它不会长时间轮询,它只是在无限循环中一遍又一遍地调用服务器。是否按预期工作只是一遍又一遍地调用php(调用服务器),你说这是JS的问题吗?但是请用完整的JS代码更新你的问题。据我所知,longpolling:JS查询您的PHP,而PHP查询您的web服务。webservice保持您与PHP/Apache服务器的连接打开,然后PHP/Apache服务器保持其与您的浏览器请求的连接打开。所以它一次又一次地调用(fast)的唯一原因是,这个链中的某个人没有保持他的连接打开。
($.ajax({
    url : "http://localhost/myphpscript.php?index=" + i, 
    type : "GET", 
    cache: false,
    success : function(messages) {
       //do stuff
    }
}));
echo curl_exec($ch);