使用 XMPP 关闭 GCM 连接服务器的套接字
Posted
技术标签:
【中文标题】使用 XMPP 关闭 GCM 连接服务器的套接字【英文标题】:Socket closed to GCM connection server using XMPP 【发布时间】:2016-09-20 19:31:39 【问题描述】:我有一个用 Erlang 编写的简单应用服务器,它使用 XMPP 发送下游消息。客户端应用程序应为 android 设备。我的 Erlang 模块实现了gen_server
行为;在init
上,它使用 XMPP 连接到 GCM 连接服务器 (CCS),
它有一个导出函数来发送下游消息。
问题是当我尝试发送消息时 SSL 套接字被关闭。如果我不发送任何消息,套接字将在 20 秒内关闭。
身份验证成功完成,我收到<success xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/>
响应。发送消息后没有 ACK 消息,套接字立即关闭。
代码可用here。这是一个使用 rebar3
的 Erlang 项目。
我在这里缺少什么?为什么我的套接字连接被关闭了?
【问题讨论】:
我不确定在init函数中打开socket是否可以。通常,主管启动所有gen_servers
的时间有限。看看他们在这个例子中是如何做到的:github.com/erlware/Erlang-and-OTP-in-Action-Source/blob/master/…
【参考方案1】:
通过在身份验证后发送额外的节来解决问题。查看问题中上面提到的链接的代码,看看应该交换哪些节才能发送通知。
GCM CCS docs 缺少此信息,因此出现了问题。
【讨论】:
以上是关于使用 XMPP 关闭 GCM 连接服务器的套接字的主要内容,如果未能解决你的问题,请参考以下文章
是否可以将 GCM 云连接服务器 (XMPP) 与 Heroku 应用程序一起使用?
使用 HTTP 和 XMPP 协议的 GCM/FCM 推送通知