如何创建不通过轮询驱动的聊天服务器?
-
19-09-2019 - |
题
我已经创建了由客户机轮询驱动的简单的聊天服务器。客户端发送请求每隔几秒钟的数据,并获得递给他们的同行是否仍连任何新的消息以及信息。
由于客户端在移动平台(iPhone)上运行,我一直在寻找摆脱轮询,迅速消耗电池电量的方法。我读过它可以保持HTTP连接开放无止境,但不明白如何利用在实践中这种技术。我也想知道这种连接是否足够稳定在移动环境中使用。
在理想的情况是,当已经发生的影响他们的事件(例如对等体发布的消息或要离线)服务器只将数据发送到客户端。
是不是最好尝试通过HTTP做到这一点,或者我会写我自己在TCP协议?它有多难将是定制XMPP我需要(我的聊天服务器,我将不得不轻松实现一些特殊的功能)。
解决方案
其他提示
我觉得你描述了BOSH XMPP。
http://xmpp.org/extensions/xep-0206.html
我使用聊天服务器和非移动设备的javascript客户端之间此http结合方法。它的工作很适合我。
您可能想看看这个项目它采用了多种技术,包括彗星。 发布细节在这里,这里是从页片断p>
这是我非常高兴能够 公布首次公开展示 一个项目,我一直在努力 我在上个月的业余时间或 二,新的基于Web的IRC聊天 应用
该项目汇集了很多 新技术,必须是 发展到使这个可行的, 可扩展和高效的。
一些的基本工具建立于 使这更多钞票,我认为 “不够稳定”已经发布, 如 PHP插槽守护进程库 我写信给能够处理 数百多达数千个 “彗星” HTTP连接,和相等 量IRC客户端连接。
我刚发现本文自己,它描述了以下技术(我在问题简称):
...有客户端做出的HTTP请求 并让服务器保持请求 队列上,直到有一个消息 推。如果TCP / IP连接 丢失或超时的,客户端会 做一个新的HTTP请求,并且延迟 只会是往返时间为 请求/响应对。 。 。这个模型 有效地需要两个TCP / IP 为HTTP,客户机连接 服务器,虽然没有永久性的, 因此移动友好
我认为这几乎是不可能的和危险的。政府上网工程无国籍,无连接的含义是客户端和服务器之间的连接是不可靠的总是处理。这是因为好玩。
这是试图让您将引入新的问题,有状态的连接。特别是从3G应用。如果连接断开?您可以在服务器无法控制,不能推。
我觉得它甚至会更容易发送短信/短信和有一个处理的应用程序。