gpt4 book ai didi

ssl - 使用 erlang 发送 apns

转载 作者:太空宇宙 更新时间:2023-11-03 14:38:37 25 4
gpt4 key购买 nike

这是我用来发送 apns 的代码的一部分。

  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

但是我得到这个错误:

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}]}}

这是一个 ejabberd 模块,相同的代码在 ejabberd 17.04 中有效,但在 17.06 中无效。
证书和 key 是有效的,正如我所说,我可以使用与旧版本的 ejabberd 相同的 erlang 模块来获得 apns。
我是 erlang 的新手,我不明白错误消息 ({options,{socket_options,[{mode,binary}]}})

感谢任何帮助。

最佳答案

问题是我发送的是二进制而不是列表:

mod_opt_type(address) -> fun binary_to_list/1;
mod_opt_type(port) -> fun(I) when is_integer(I) -> I end;
mod_opt_type(certfile) -> fun binary_to_list/1;
mod_opt_type(keyfile) -> fun binary_to_list/1;

关于ssl - 使用 erlang 发送 apns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45244230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com