【问题标题】:whats the best way to implement real time push messages with apache, php and mysql only?仅使用 apache、php 和 mysql 实现实时推送消息的最佳方法是什么?
【发布时间】:2026-01-24 16:00:01
【问题描述】:

我正在尝试为 android 实现一个聊天应用程序(用户可以在其中与位于同一位置的人交流)。我认为它是一个面向地理特定的 facebook 信使。我遇到了诸如重复拉动、彗星、波什、websockects、套接字编程、xmpp(需要像openfire这样的xmpp服务器)等术语来做到这一点。但是我的资源是固定的,比如 apache、php (codeignter) 和 MySql。我需要找到有效的方法来做到这一点。伙计们,我需要这个。请帮帮我。

谢谢你, 阿比亚

【问题讨论】:

    标签: php mysql apache


    【解决方案1】:

    Android 上的首选方法是Google Cloud Messaging

    Google Cloud Messaging for Android (GCM) 是一项服务,可让您 将数据从您的服务器发送到用户的 Android 设备。 这可能是一条轻量级消息,告诉您的应用有新数据 从服务器获取(例如,由 朋友),或者它可能是一条包含多达 4kb 有效负载数据的消息 (因此即时通讯等应用可以直接使用消息)。

    GCM 服务处理消息排队和 交付到目标上运行的目标 Android 应用程序 设备。无论您的消息传递需求有多大,GCM 都是完全免费的 是,并且没有配额。

    基本上,它的工作原理是这样的:您的服务器与 Google 对话,Google 会实时推送消息(或几乎如此,只要设备已开机并连接到互联网) 到 Android 设备。首次安装应用程序时(以及将来重新验证注册),Android 设备上会发生一个注册过程。 在您的 Android 应用中,您有责任将此注册 ID 发送到您的服务器,以便您可以将其存储以供将来使用。您的服务器在向该设备推送消息时会使用此注册 ID。

    您的服务器和 Google 之间的通信协议是基于 HTTPS 的 JSON。您的服务器可以使用任何语言/技术,只要它可以与 Google 的服务器通信。一个PHP/MySQL应用绝对可以满足服务的基本要求:

    在您可以编写使用 GCM 的客户端 Android 应用程序之前 功能,您必须有一个满足以下条件的应用服务器 标准:

    • 能够与您的客户沟通。
    • 能够向 GCM 服务器发出 HTTPS 请求。
    • 能够使用指数回退处理请求并根据需要重新发送。
    • 能够存储 API 密钥和客户端注册 ID。

    在客户端,Android 设备必须运行 API 版本 8 (Android 2.2) 或更高版本。当然,处理传入消息也是您的 Android 应用程序的责任(使用广播接收器,因为每当消息到达时,Android 系统都会向您的接收器发送一个 Intent),这使您可以根据需要处理消息。

    【讨论】:

    • 用于 IM 应用程序。使用 http 不是最佳实践。我现在正在使用 rabbitmq 的 pubsub 将消息推送到手机
    • Google Cloud Messaging 绝对是 Android 应用程序(包括聊天类应用程序)的最佳实践。虽然技术上 GCM 使用 HTTPS,但它的性能与标准 HTTP 完全不同。连接建立一次并永远保持打开状态,因此每次收到消息时都没有 DNS 或连接开销。 GCM 正确处理了许多其他人可能忽略的令人讨厌的内部问题(安全性、重新交付、在应用程序未运行时接收、管理电池寿命等)。最后,无论如何,GCM已经在手机上运行,所以使用它而不是建立额外的连接。
    • 我认为它不正确。 GCM 能够正确处理消息的传递,这真是太好了。但问题是在发送消息时。从手机你必须做一个http conn,从我们的服务器它必须做一个http conn。它会很好地加载我们的服务器。
    • 不,关键是移动设备上的连接已经建立(它“始终在线”),因此您无需在移动设备上建立任何新连接。这使得它在移动端快速,更不用说资源密集型了。在服务器端,您确实需要打开将 POST 消息发送到 GCM 的连接,但我相信您可以使用 HTTP 的保持活动功能通过一个连接发送多条消息。
    • 现在 GCM 支持上游消息传递,即客户端到服务器。现在,应用程序可以通过 google ccs 服务器向应用程序服务器发送消息。应用服务器必须通过 xmpp 协议连接到 ccs 服务器并处理消息。
    最近更新 更多