我正在使用Laravel构建可帮助用户找到服务提供商的应用程序。将有2个应用程序,如优步,1个用户和1个提供商。用户将发出请求,并根据请求,所选提供商将收到通知。就像优步一样。
问题是,我该如何设计呢。我想出了什么:
2 APPS: 拥有2个带有常见数据库的Laravel应用程序。但是,当用户生成请求时,如何通知提供商?只有数据库发生变化,那么我如何告诉提供者应用程序用户应用程序生成请求?
单个应用2前端: 有一个Laravel应用程序和2个前端。 Play商店将有单独的应用程序,但单个服务器应用程序。我怎么能这样做?
这种方法有更好的解决方案吗?优步如何做到这一点?
答案 0 :(得分:7)
我建议你应该使用像PubNub (see Demos)这样的服务。
这样你可以保存你的服务器开发,还有一个Android-Example 您可以在APP中简单地使用它:
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"
所以我希望我能回答,优步如何做到这一点,以及如何让它变得更好: - )
答案 1 :(得分:5)
我认为一个好的解决方案是将所有业务逻辑放入一个可通过REST访问的Laravel应用程序中。所以你不必两次更新文件。
“真正的”应用程序仅作为中间层使用此API。
例如,在前面您可以设置Angular Apps。如果使用nginx,则可以为每个域定义不同的位置。这样,以“api”开头的所有请求都将路由到您的Laravel应用程序。其余的路由到您的静态Angular App。
{
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;
}
}
如果您使用Laravel构建您的前端应用程序,API将成为前端系统使用的自己的URL。为了做这个请求,我喜欢使用Zend \ Http \ Client,这非常舒服。
答案 2 :(得分:3)
如果您想为normar用户和提供商开发应用程序。
然后我会建议你 开发2个seprate应用程序和单个服务器(永远不会为任何应用程序创建不同的服务器)
或者您可以在注册时指定用户类型。
答案 3 :(得分:2)
您应该开发一个通用API和两个应用程序,如Uber。或者你可以为eBay这样的供应商和买家构建一个应用程序。您应该在服务器代码上使用侦听器,因此无论何时触发事件,您都应该发送此类通知。看看听众的设计模式。
答案 4 :(得分:0)
由于存在单个(数据库),因此最好使用单个后端应用程序。当用户添加新请求时,您可以将推送通知发送给提供商(Android应用程序)。