使用php curl进行长轮询

时间:2015-07-13 19:08:43

标签: javascript php ajax curl

我正在关注使用HTTP长轮询的Spring MVC聊天客户端的this example

我的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)
?>

我用我的JavaScript调用这个PHP文件,参数如下:

($.ajax({
    url : "http://localhost/myphpscript.php?index=" + i, 
    type : "GET", 
    cache: false,
    success : function(messages) {
       //do stuff
    }
}));

PHP文件位于我的localhost中。这似乎不起作用,因为JavaScript似乎无休止地调用PHP(它调用URL)。我是否正确使用PHP卷曲进行长时间轮询?我是否需要在JavaScript中进行Ajax调用,因为我是curl中的HTTP调用?

2 个答案:

答案 0 :(得分:1)

使用CURLOPT_RETURNTRANSFER,您需要回复curl_exec($ch)的结果

echo curl_exec($ch);

答案 1 :(得分:0)

因为它不允许发送cross site requests(这也适用于端口),你需要做这个PHP中继的事情。

从不如此。一遍又一遍地请求相同的请求(轮询)几乎是正确的但是您的Web服务应该保持连接打开,直到它有一些新信息或请求超时(长轮询)。

您的网络服务返回什么(Http-Status ok?任何内容?)