我对MySQL中的实时通知有疑问。 我希望当MySQL数据库的特定表发生更改时,该数据库通知我的android应用程序正在执行某项操作。
有可能做吗?我听过触发器可以提供帮助,但是我在网络上什么都没找到,特别是对于android。
我正在为大学的一个android项目创建一个实时聊天应用程序。需要在项目中使用servlet,因此我的servlet向数据库发出请求,并将数据发送到应用程序。为此,应用程序每秒向Servlet发出GET请求以获取新消息。我想避免仅在数据库发生更改时发出这些请求并更新消息列表。我知道例如可以使用firebase来完成,但是必须使用servlet,我想知道是否有一种方法可以在发生此更改时通知应用程序。
消息将通过更新数据库的Servlet的POST请求插入db中;有关消息的信息是从应用程序中的编辑文本中获取的,并且我发出了发送按钮,所以我要做的就是在数据库中检测到新消息时推送android应用程序。
答案 0 :(得分:0)
“有可能吗?”问题总是很难回答。答案几乎总是“是”,但“是否明智”,“是否是个好主意”,“是否建议”,这会使问题变得更加复杂。我不知道MySQL数据库的更改可以在更改后通知各个Android应用安装。但是,一个正在运行的Android应用程序实例可以轮询MySQL数据库并查找表的结构,如果该表的结构与上次轮询的表不同,则可以执行某些操作。
如果应用程序不断轮询MySQL数据库以检查表的结构,这将产生很大的开销。那会给您的MySQL安装增加很多需求,消耗大量应用程序用户的带宽和数据计划。
是的,“有可能”。 “建议吗”,不。
一个问题是,您认为表结构可能会发生什么变化,以及发生的频率是多少?许多人所做的是,当应用程序启动新会话时,只检查一次数据库表结构。如果在启动时检测到更改,则可以对其逻辑进行必要的本地更改,然后假定该结构在会话的其余部分中保持不变。这样可以消除我之前提到的持续轮询和其他负面行为。
答案 1 :(得分:0)
大概您有一些代码组件将命令发送到数据库。如果是,那么您可以在其中添加代码以通过websockets或类似的东西向您的应用发布通知。数据库中的触发器是有代价的,如果需要很多触发器,则应避免使用。 如前所述,该应用不断轮询,寻找更改也很昂贵,并且最好避免。