Ras*_*ash 4 python client-server python-3.x
因此,我创建了一个应用程序,其中该应用程序连接到服务器并告诉它执行某些操作。但是,服务器需要大量时间来完成该操作(例如一个小时左右)。因此,将客户端长时间连接到服务器没有任何意义。我希望服务器必须创建与客户端的连接,以告知他已准备好交付最终结果。然后,在连接之后,他将数据发送到客户端。
我在这里想两个想法:
我也可以在客户端上创建服务器,并且客户端可以侦听服务器连接。但是,我的客户通常是一些资源有限的桌面应用或移动应用,其中一些还位于防火墙/ NAT之后。因此,即使他们正在运行服务器,我也不确定我的主服务器是否能够连接到它们。
客户可以定期检查结果是否准备就绪。这样,客户端不必维护任何服务器或任何东西。它将是普通的旧客户端服务器体系结构。但这会浪费大量不必要的流量,因为结果可能会在几分钟到几小时内出现。客户端不断固定服务器对我来说似乎并不好。
我首先不知道从哪里开始或用谷歌搜索这些东西。我知道存在这种情况是因为我经常看到诸如“ Skype”之类的服务器通知我的桌面应用程序我有新朋友请求,或者是Gmail通知系统,其中Google会在收到新邮件时在我的桌面上显示一条消息。
大多数Google搜索在客户端连接到服务器时会产生相同的内容。但是这里的情况恰恰相反。
如果这个问题不符合标准,那么一些参考文献也不错,我将删除此帖子。我很可能没有在思考并且变得愚蠢。请帮忙。谢谢。
因此,在研究了许多相关文章之后,我想出了以下内容。
这些链接描述了所谓的“服务器推送”,它基本上是将数据从服务器推送到客户端。这里讨论了多种方法。我的第二点实际上非常接近解决方案,第二点的术语称为长轮询。
但是这两篇文章中讨论的方法都是关于将数据推回Web浏览器的。在某些情况下,该解决方案可以扩展到移动客户端中的服务器推送,但我仍在阅读它们,因此不多评论。
但是,对于服务器到应用程序的推送(这是我的要求),确实有两件事:
我目前已决定使用Amazon SNS,并且还将继续学习Redis,以备将来使用。
需要服务器推送吗?忘记其他所有内容,并使用Redis + Socket-IO + Node-JS。我怎么不知道Websockets。第二好的。
在我的应用程序中,我只是向Redis发送任何要推送给客户端的消息。Redis发布这些消息。Socket.IO正在使用以下方法监听频道psubscribe用于侦听模式,而不是侦听一个通道。用户类别由通道名称定义。
一旦socket.io(用node.js编写)听到了该消息,它只会将emit这些消息发送给客户端。客户端依次在特定端口上监听socket.io。Socket.io支持rooms像channel在。
对于实时示例,仅使用google real time chat with socket.io and node.js。
如果有人要求我也会写一些例子。它真正的容易。
| 归档时间: |
|
| 查看次数: |
1166 次 |
| 最近记录: |