问题描述
我正在尝试为苹果设备做一个通知系统,但是当我尝试在服务器上运行它时出现以下错误:
I’m trying to do a notifications system for apple devices, but I’m getting the following errors when I try to run it on the server:
警告:stream_socket_client():SSL:连接被peer in 重置/home/empresa/public_html/simplepush/push.php 第 30 行
警告:stream_socket_client():无法在/home/empresa/public_html/push/push.php 第 30 行
Warning: stream_socket_client(): Failed to enable crypto in /home/empresa /public_html/push/push.php on line 30
警告:stream_socket_client():无法连接到ssl://gateway.sandbox.push.apple.com:2195(未知错误)在/home/empresa/public_html/push/push.php on line 30 连接失败:0
Warning: stream_socket_client(): unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) in /home/empresa /public_html/push/push.php on line 30 Failed to connect: 0
我的代码是这样的:
<?php
ini_set('display_errors','On');
error_reporting(E_ALL);
$deviceToken= 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$passphrase = ' ';
$message = 'my first 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);
会发生什么?谢谢.
推荐答案
我不确定是什么原因
但请确保您没有做错以下任何事情:
不要同时进行很多连接.要么重复使用相同的连接或发送 Push 后关闭连接通知.实际上,服务器对最大数量有限制并行连接,这可能会给您带来麻烦,一旦您达到阈值.苹果还建议保持连接打开,除非你知道它会闲置.
Don't make many connections in parallel. Either reuse the sameconnection or close the connection after delivering PushNotifications. Actually, servers have a limit for maximum number ofparallel connections, which might leave you in trouble, once youreach threshold. Also Apple suggests leave a connection open unlessyou know it will be idle.
在多个通知中保持与 APNs 的连接;不要反复打开和关闭连接.APNs 将快速连接和断开连接视为拒绝服务攻击.您应该保持连接打开,除非您知道它会在很长一段时间内处于空闲状态——例如,如果您每天只向用户发送一次通知,那么每天都可以使用一个新连接.
Keep your connections with APNs open across multiple notifications; don’t repeatedly open and close connections. APNs treats rapid connection and disconnection as a denial-of-service attack. You should leave a connection open unless you know it will be idle for an extended period of time—for example, if you only send notifications to your users once a day it is ok to use a new connection each day.
不要将开发者资料令牌发送到 LIVE APNS.保持分发和开发应用程序令牌分开.它可能导致错误,如果您尝试将沙盒令牌发送到 LIVE APNS,反之亦然.
Don't send out developer profile tokens to LIVE APNS. Keepdistribution and development app tokens separate. It could result inerror, if you try to send sandbox tokens to LIVE APNS or vice versa.
SOURCE - APNS - 通知推送 ios:连接由对等 PHP 重置
这篇关于通知推送 ios:对等方重置连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!