与websockets和gcm的聊天算法

时间:2014-11-20 23:54:42

标签: android google-cloud-messaging

我有一个聊天网站,我建立了这个网站的应用程序。现在我的网站和应用程序使用socket.io(websocket)。在我的应用程序的当前版本,当用户关闭应用程序用户无法接收任何消息(通常)。我决定将GCM支持添加到我的应用程序以获取推送通知。但我对此有疑问。

我的情景:

  • 用户1从PC登录系统,然后连接到socket.io 服务器,他正在等待消息。
  • 用户2从Android应用程序登录系统然后连接到 socket.io server。
  • 现在他们正在聊天。

但是10分钟后,用户2关闭了应用程序,现在他不会收到消息。

我问我应该怎样做才能向用户2发送推送通知?

我不是在询问GCM的实现,我知道GCM的实现。我知道用户2设备ID以及如何向该用户发送推送通知。

我的问题是:我需要使用socket.io和GCM。我怎么能检测到“好的,当用户1向用户2发送消息时用户2关闭应用程序2接收此消息并发送到gcm服务器”

这是一个好方法吗?或者你对这个聊天系统有什么建议?例子你可以举一个Whatsapp的例子他们如何处理这个问题?我认为他们只使用Gcm进行推送通知,在app中他们正在使用Erlang。

1 个答案:

答案 0 :(得分:1)

它不是连接到GCM的socket.io。 您需要一个Node.js模块,它支持从Node.js(运行socket.io)到GCM的连接。像这样的模块gcm module,也有一些例子可以帮助你入门。

因此,在您的情况下,如果用户在线(您应该已经在线),则需要致电socket.emit(),否则用户处于离线状态,您希望通过调用{来推送消息{1}}。

要检测用户是否处于离线状态,您需要在调用gcm.send()处理程序时将用户添加到离线列表。