这有点紧张,但我希望有人可以提供帮助。
我是一名PHP / iOS开发人员,他一直致力于开发具有消息传递组件的应用。前端是Obj-C,后端是PHP / MySQL。随着我进一步深入开发,我感觉到了轮询的缺点,我一直在寻找更实时的解决方案,当然,我已经在网络套接字中找到答案了。 。 PHP在这个领域并没有很好的发挥,但我已经能够通过使用Laravel + Redis + Node.js在本地工作。
接下来我需要为现实世界的应用部署找到一个合适的主机,这就是我遇到第一个主要障碍(或感知到的障碍?)
Heroku似乎对允许的Redis连接数有非常低的限制:
链接:https://elements.heroku.com/addons/heroku-redis 免费计划:20个连接 120美元/月:400个连接 $ 1450 /月:5000个连接
问题是,如果这个应用程序运行良好并获得我想要的那种牵引力,很多人将同时在全国各地使用它,这些限制令我担心。这些价格看起来有点荒谬,或者我没有正确看待它。
所以我的问题是,维护一个开放的Web套接字(一个用户)是否意味着使用了一个Redis连接?还是我看这完全错了?试图决定我是否需要坚持轮询,或者是否有一个具有成本效益的解决方案。如果可能的话,我确实想要坚持使用Laravel / Redis,因为我对JS不太熟悉,如果我此时尝试沿着这条路走下去,我觉得我的后端安全性会低得多。
答案 0 :(得分:0)
正确的设计将为每个服务器(或每个Heroku Dyno)使用2个Redis连接:
一个连接将用于订阅(收听)应用的频道。此连接不能用于其他功能,因此......
第二个连接用于所有其他Redis功能,例如数据库使用和发布到应用程序的频道。
我不知道您是否加入Ruby,但我是Plezi Http(REST)/Websocket framework的作者,并且必须管理Plezi在Redis上扩展功能的解决方案(这是一个自动功能,你只需告诉Plezi Redis服务器的地址,你就可以了。)
如果要查看Plezi's Redis code,您会注意到有两个连接,每个服务器注册到两个通道 - 全局通道和专用通道:一个用于应用程序范围的事件,另一个允许消息根据它们所属的服务器路由到特定连接(避免不相关服务器上的工作负载)。
祝你好运!