2013-06-19 73 views
4

我試圖在我的服務器和Google Cloud Connection Server(CCS)之間打開XMPP連接,但它不起作用。我使用PHP編程並使用JAXL庫。這裏是我的代碼:無法連接到Google Cloud Connection服務器

<?php 
include_once 'jaxl.php'; 

$client = new JAXL(array(
    'jid'=>'<my_sender_ID>@gcm.googleapis.com', 
    'pass'=>'my_API_key', 
    'auth_type'=>'PLAIN', 
    'host' => 'gcm.googleapis.com', 
    'port' => '5235', 
    'force_tls' => true 
)); 
$client->start(); 
echo "done"; 
?> 

然後我得到這個錯誤:

unable to connect tcp://gcm.googleapis.com:5235 with error no: 110, error str: Connection timed out 

我究竟做錯了什麼?

+0

但從'連接超時out'一個純粹的網絡點通常是指連接問題,所以我會檢查PING和防火牆,並可能使用NMAP來查看端口5235是否可訪問。 –

回答

0

也許您應該將host更改爲http://gcm.googleapis.com。您的錯誤顯示「無法連接tcp://gcm.googleapis.com:5235」。

GCM Cloud Connection Server (CCS) is an XMPP endpoint, running on http://gcm.googleapis.com port 5235.

+0

不,這是一樣的,我已經試過了 –

4

您應該通過ssl連接到gcm.googleapis.com,而不是http或tcp。

我解決了這個問題通過修改jaxl.php:

public function get_socket_path() { 
    return ($this->cfg['port'] == 5223 ? "ssl" : "tcp")."://".$this->cfg['host'].":".$this->cfg['port']; 
} 

到:

$client = new JAXL(array(
    'jid' => '<your-API-key>@gcm.googleapis.com', 
    'pass' => '<your-API-key>', 
    'host' => 'gcm.googleapis.com', 
    'port' => 5235, 
    'force_tls' => true, 
    'auth_type' => 'PLAIN', 
    'strict' => FALSE, 
    'ssl' => TRUE 
)); 
+0

你可以請我提供代碼,因爲我正在嘗試做同樣的事情。我使用java製作了一個CCSServer,但是想要轉移到php。我已經嘗試了一切,請幫助我。 – Saty

+1

我使用了這個JAXL庫:https://github.com/abhinavsingh/JAXL –

2

此外,當您:

public function get_socket_path() { 
    return ($this->cfg['port'] == 5223 || $this->cfg['ssl'] == true ? "ssl" : "tcp")."://".$this->cfg['host'].":".$this->cfg['port']; 
} 

之後,你可以用初始化客戶端初始化客戶端,使用

'log_level' => JAXL_DEBUG 

這將允許您查看發送或接收的所有內容。就我而言,我想通了,我的項目還沒有被列入白名單 - 我忘了註冊它https://services.google.com/fb/forms/gcm/

jaxl_socket_client:189 - 2013-10-04 08:11:58 - <failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><temporary-auth-failure/><text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">Project 1not whitelisted.</text></failure>