为什么android GCM服务器在一些后续GCM请求后给出超时

时间:2015-05-14 16:25:13

标签: php android curl google-cloud-messaging

我的服务器将GCM请求发送到GCM api以获取推送通知。推送通知适用于某些推送通知,之后正在发出请求的curl函数超时并出现以下错误

“卷曲失败:无法连接到android.googleapis.com端口443:连接超时”

没有任何回复。但响应代码是200欧。

但是有一段时间后如果我尝试它会发送通知并给出正确的成功响应,如果我尝试发送一段时间,它会再次挂起并显示上述消息。

我在防火墙上打开了端口5228,5229和5230。

为什么会发生这种情况。我无法理解为什么会这样。

这是使用

的代码
$headers = array( 
    'Authorization: key=' . $this->serverApiKey,
    'Content-Type: application/json'
);
// Open connection
$ch = curl_init();

// Set the url, number of POST vars, POST data
curl_setopt( $ch, CURLOPT_URL, $this->url );
curl_setopt($ch, CURLOPT_PORT, 443);
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );

curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $fields ) );

// Avoids problem with https certificate
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false);

// Execute post
$result = curl_exec($ch);

请帮我找到解决方案。

1 个答案:

答案 0 :(得分:0)

这似乎更像是防火墙/代理服务器问题。请确保您的服务器中已打开端口443。使用ping和curl命令来验证这一点。

请参阅此Stack Overflow问题以获取更多信息。