Laravel消费者和提供者应用程序架构

我正在使用Laravel构build一个帮助用户查找服务提供者的应用程序。 将会有2个应用程序像Uber,1个用户和1个供应商。 用户将提出请求,根据请求,选定的提供者将收到通知。 就像Uber。

问题是,我应该如何devise这个。 我想到了什么:

  1. 2 APPS:有2个共同的数据库Laravel应用程序。 但是,如何在用户生成请求时通知提供者? 只有数据库发生了变化,那么如何告诉提供者应用程序,用户应用程序生成了一个请求

  2. 单一应用程序2前端:有一个单一的Laravel应用程序和2个前端。 Play商店中将有单独的应用程序,但单个服务器应用程序。 我怎样才能做到这一点?

有没有更好的解决scheme? Uber如何做同样的事情?

Solutions Collecting From Web of "Laravel消费者和提供者应用程序架构"

我build议你应该使用一个给定的服务,如PubNub(见演示) 。

这样你可以保存你的服务器开发,也有一个Android的例子你简单地使用它在你的应用程序是这样的:

dependencies { .... compile 'com.pubnub:pubnub:3.7.4' //'com.pubnub:pubnub-android-debug:3.7.+' For the debug version } 

 import com.pubnub.api.*; import org.json.*; Pubnub pubnub = new Pubnub("demo", "demo"); try { pubnub.subscribe("my_channel", new Callback() { @Override public void connectCallback(String channel, Object message) { pubnub.publish("my_channel", "Hello from the PubNub Java SDK", new Callback() {}); } @Override public void disconnectCallback(String channel, Object message) { System.out.println("SUBSCRIBE : DISCONNECT on channel:" + channel + " : " + message.getClass() + " : " + message.toString()); } public void reconnectCallback(String channel, Object message) { System.out.println("SUBSCRIBE : RECONNECT on channel:" + channel + " : " + message.getClass() + " : " + message.toString()); } @Override public void successCallback(String channel, Object message) { System.out.println("SUBSCRIBE : " + channel + " : " + message.getClass() + " : " + message.toString()); } @Override public void errorCallback(String channel, PubnubError error) { System.out.println("SUBSCRIBE : ERROR on channel " + channel + " : " + error.toString()); } } ); } catch (PubnubException e) { System.out.println(e.toString()); } 

如果您正在寻找Uber如何做这个想法,请参阅教程“ The PubNub Connected Car Solution Kit ”

所以我希望我能够回答,Uber如何做到这一点,以及如何让它变得更好:-)

我认为一个好的解决办法是把所有的业务逻辑放到一个可以通过REST访问的Laravel应用程序中。 所以你不必更新文件两次。

“真正”的应用程序只能作为中间层使用这个API。

例如,在前面你可以设置Angular Apps。 如果您使用nginx,则可以为每个域定义不同的位置。 这样所有以“api”开头的请求都会被路由到您的Laravel应用程序。 其余的路由到您的静态Angular应用程序。

 { listen 80; server_name customer.com; location /api{ root /var/www/api; } location / { root /var/www/static/customer; } } { listen 80; server_name internalarea.com; location /api{ root /var/www/api; } location / { root /var/www/static/restricted; } } 

https://www.digitalocean.com/community/tutorials/understanding-nginx-server-and-location-block-selection-algorithms

如果您还使用Laravel构build前端应用程序,则API将成为前端系统使用的自己的URL。 为了做这个请求,我喜欢使用Zend \ Http \ Client,这非常舒服。

如果你想开发normar用户和供应商的应用程序。

那么我会build议你开发2 seprate应用程序和一个单一的服务器(不要为任何应用程序创build不同的服务器)

或者您可以在注册时分配用户types

你应该开发一个通用的API和Uber这样的两个应用程序。 或者你可以只为eBay这样的供应商和买家构build一个应用程序。 你应该在你的服务器代码上使用一个监听器,所以每当一个事件被触发时,你应该发送这样和那样的通知。 看看听众的devise模式。

由于有单个(数据库),所以最好使用单一的后端应用程序。 当用户添加新请求时,您可以将推送通知发送给提供者(android应用程序)。