连接苹果推送服务时出现连接错误 10060 [英] Connection error 10060 while connect to apple push service

查看:41
本文介绍了连接苹果推送服务时出现连接错误 10060的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 Windows 服务器并运行 php 5

im using windows server and run php 5

我遇到了这个错误

Warning: stream_socket_client() [function.stream-socket-client]: unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. ) in C:\Inetpub\vhosts\..domain..\simplepush.php on line 21
Failed to connect: 10060 A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. 

我中止了服务器上的防火墙以确保它不是端口问题..

i abort the firewall on the server to be sure its not port issue..

源文件是

<?php

// Put your device token here (without spaces):
$deviceToken = '0b98f290f8b0ba40f1d476f7196b5195f5c61299cd536bdc429ea3e397ab5259';

// Put your private key's passphrase here:
$passphrase = 'Test123';

// Put your alert message here:
$message = 'My first push notification!';

////////////////////////////////////////////////////////////////////////////////

$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);

// Open a connection to the APNS server
$fp = stream_socket_client(
    'ssl://gateway.sandbox.push.apple.com:2195', $err,
    $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);

if (!$fp)
    exit("Failed to connect: $err $errstr" . PHP_EOL);

echo 'Connected to APNS' . PHP_EOL;

// Create the payload body
$body['aps'] = array(
    'alert' => $message,
    'sound' => 'default'
    );

// Encode the payload as JSON
$payload = json_encode($body);

// Build the binary notification
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;

// Send it to the server
$result = fwrite($fp, $msg, strlen($msg));

if (!$result)
    echo 'Message not delivered' . PHP_EOL;
else
    echo 'Message successfully delivered' . PHP_EOL;

// Close the connection to the server
fclose($fp);

另一件事,当我在 mac 上运行这个脚本时,它成功了,没有任何麻烦.

another thing, when i run this script on mac its succeeded without abny trouble.

有人知道怎么解决吗?或者至少是什么问题?

any one know how to fix it? or at least what the problem is?

感谢您的帮助

推荐答案

您需要在启用 ssl 的托管设置上运行该服务,如果在 Windows 机器上使用启用了 PHP 扩展 OpenSSL 的 WAMP(您可以通过单击 WAMP 的系统托盘图标并从 PHP 扩展中选择 openssl).

You need to be running the service on a hosting setup with ssl enabled, if on a Windows machine use WAMP with PHP extension OpenSSL enabled (you can enable it by clicking the system tray icon for WAMP and choosing openssl from PHP extensions).

这篇关于连接苹果推送服务时出现连接错误 10060的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆