将通知服务器推送到选定的客户端

时间:2013-07-18 09:16:01

标签: php python rest

目前我正在使用带有REST API的Web应用程序(LAMP堆栈)与客户端进行通信(Python桌面应用程序)。

客户端可以向服务器注册,并通过REST API将状态发送到服务器。

现在我需要从Web应用程序(服务器)向所选客户端推送通知。

我的问题是如何从服务器(php)发送推送通知并从客户端(python)读取它。

2 个答案:

答案 0 :(得分:2)

有很多方法,大多数方法都涉及服务器和客户端之间的某种预先连接。

如果桌面客户端通过HTTP进行通信,您可以使用Server Sent Eventswebsockets或实施一些长轮询来推送通知。

您还可以使用提供推送通知的第三方服务。

答案 1 :(得分:1)

所以基本上你可以在某个时间间隔内(interval ~ 0 == realtime)从客户端查询服务器,并询问是否有新闻。

通常apache无法处理长时间等待连接,因为它的线程/ fork请求处理模型。

您可以尝试切换到nginx,因为它使用套接字多路复用(select / epoll / kqueue),因此它可以处理许多并发的长时间等待连接。)

或者你可以考虑使用node.js并用它替换你的php应用程序,这绝对是为了这个目的。

很好的解决方案是web framework/language + redis pub/sub functionality + node.js。您可以正常请求您的Web应用程序,但与node.js服务器的连接过于开放,node.js服务器会在需要时注意到您的客户端。如果您想告诉node.js有关通知某些客户的信息,您可以通过redis pub / sub从您的Web应用程序进行操作。