4

我正在尝试在我的服务器和 Google Cloud Connection Server (CCS) 之间打开 XMPP 连接,但它不起作用。我正在使用 PHP 编程并使用 JAXL 库。这是我的代码:

<?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

我究竟做错了什么?

4

3 回答 3

4

您应该通过 ssl 而不是 http 或 tcp 连接到 gcm.googleapis.com。

我通过修改 jaxl.php 来解决这个问题:

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

至:

public function get_socket_path() {
    return ($this->cfg['port'] == 5223 || $this->cfg['ssl'] == true ? "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
));
于 2013-09-23T13:00:51.113 回答
2

此外,当您初始化客户端时,请使用

'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 1012343798740 not whitelisted.</text></failure>
于 2013-10-04T09:09:03.063 回答
0

也许您应该将其更改hosthttp://gcm.googleapis.com。您的错误显示“无法连接tcp ://gcm.googleapis.com:5235”。

GCM 云连接服务器 (CCS) 是一个 XMPP 端点,在http://gcm.googleapis.com端口 5235 上运行。

于 2013-06-19T14:06:54.283 回答