AngularJS和MySQL实时通信

时间:2017-04-30 22:43:31

标签: javascript php mysql angularjs

我使用AngularJS(前端)和PHP / MySQL(后端)构建了一个Web应用程序。

我想知道是否有办法去观看" MySQL数据库(没有Node.js),所以如果一个用户向其添加了一些数据,那么这些更改也会同步到其他用户。

E.g。我知道Firebase可以做到这一点,但是它是面向对象的数据库,我无法像使用SQL那样在那里进行高级查询。

我在考虑使用$interval$http并执行ajax请求,这样我就可以检测到数据库中的更改。嗯,这是可能的,但它会每天向服务器发送数千个http请求,并在每个请求上解释php。

我相信没有什么是不可能的,我只是需要一个想法来做到这一点,我没有,所以这就是我在这里寻求帮助的原因。

1 个答案:

答案 0 :(得分:0)

如果您想要一种"实时通信的形式"你可能不得不从客户那里加入某种形式的长轮询。除非你使用网络套接字,但这是一篇关于一堆不同内容的重要帖子。你担心数据库的带宽和需求是正确的。所以这是我的建议:

如果您没有使用Web套接字的经验,请在单独的表/视图中记录您的事件,并使用pub / sub方法将实体订阅到事件,并将该事件广播到表中。然后对观察者视图进行长轮询以查看可能发生的更改。如果确实发生了一个,那么您查询确切的值。

另一个选择是使用一些查询系统与"决策者"持有消息。看看亚马逊的SQS平台,以更好地解释这是如何工作的。基本上,您有一个保存消息的队列,并且决策者使用一些散列或排序方法选择存储消息的位置(以减少运行时间)。当客户端请求更新时,决策程序会根据哈希/排序查找将应用的任何消息并返回它们。然后你只需要决定如何以及何时破坏消息。

第二种选择需要更多的修补,所以它真的与你的偏好有关。我认为您遇到的困难是,大多数解决方案必须处理这样的事实:消息必须被传送一次或多次,并且您需要跟踪某人何时收到消息,以及是否它现在可以从队列/事件表中删除,或者如果您仍需要等待。否则你会消耗大量内存。