PHP中的stream_context_create()等效于perl

时间:2015-05-19 22:50:07

标签: php perl apple-push-notifications

我正在关注教程https://blog.serverdensity.com/how-to-build-an-apple-push-notification-provider-server-tutorial/以实现与Apple APNS服务器的连接。本教程为此提供了一个php代码:

// Open the connection
$apnsHost = 'gateway.sandbox.push.apple.com';
$apnsPort = 2195;
$apnsCert = 'apns-dev.pem';

$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);

$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext);

// Send the payload
$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload;
fwrite($apns, $apnsMessage);

// Close Resources
socket_close($apns);
fclose($apns);

我想用Perl写这个。什么是PHP的stream_context_create()的最佳等价物。我试过类似下面的东西,但没有用。

use IO::Socket::SSL;

my $client = IO::Socket::SSL->new(
        # where to connect
        PeerHost => "gateway.sandbox.push.apple.com",
        PeerPort => "2195",

        SSL_cert_file =>'localcert.pem',

    ) or die "failed connect or ssl handshake: $!,$SSL_ERROR";

0 个答案:

没有答案