Cela fait partie du code que j'utilise pour envoyer des notifications.Envoi d'appels via erlang
Options = case Password of
undefined ->
[{certfile, Cert}, {keyfile, Keyfile}, {mode, binary}];
_ ->
[{certfile, Cert}, {keyfile, Keyfile}, {password, Password}, {mode, binary}]
end,
case ssl:connect(Address, Port, Options, ?Timeout) of
{ok, Socket} ->
PayloadBin = list_to_binary(Payload),
PayloadLength = size(PayloadBin),
TokenNum = erlang:binary_to_integer(Token, 16),
TokenBin = <<TokenNum:32/integer-unit:8>>,
Packet = <<
0:8,
32:16/big,
TokenBin/binary,
PayloadLength:16/big,
PayloadBin/binary
>>,
ssl:send(Socket, Packet),
ssl:close(Socket),
?DEBUG("mod_apns: Successfully sent payload to the APNS server", []),
ok;
{error, Reason} ->
?ERROR_MSG("mod_apns: Unable to connect:~p to the APNS server ~p: ~p", [Options, Address, Reason]),
Reason
end
Mais je reçois cette erreur:
Unable to connect:[{certfile,<<"/etc/certificates/myCer.pem">>},{keyfile,<<"/etc/certificates/myKey.pem">>},{mode,binary}] to the APNS server <<"gateway.push.apple.com">>: {options,{socket_options,[{mode,binary}]}}
C'est un module ejabberd et même code fonctionne dans ejabberd 17.04, mais pas dans 17,06.
Les certificats et les clés sont valides et, comme je l'ai dit, je peux obtenir des apns en utilisant le même module erlang avec une ancienne version d'ejabberd.
Je suis nouveau à erlang et je ne comprends pas le message d'erreur ({options,{socket_options,[{mode,binary}]}})
Toute aide est appréciée.
J'ai ajouté plus de code .. Quand je change {mode, binaire} pour {mode, mode :: binaire | liste} J'obtiens une erreur de syntaxe – Besat
Eventuellement: '{mode, Mode :: binary | list} => Le paquet reçu est livré comme défini par Mode.' Donc ... le paquet reçu est un type binaire erlang ou une liste. – 7stud
L'option serait spécifiée comme '{mode, binaire}' ou '{mode, liste}'. Dans la _specification_ que j'ai posté, le nom de la variable d'espace réservé est Mode, et il peut avoir les valeurs 'binary | liste » – 7stud