2013-04-04 75 views
2

我正在寻找一个实时托管的推送/套接字服务(支付罚款),它将处理来自许多客户端(JS)和服务器API的许多连接/通道,它们可以订阅/发布到这些通道一个PHP脚本。实时应用程序需要推送服务建议

下面是一个例子:

客户端UI已使100辆卡车车队,当卡车被修改其数据推送到信道(如:/更新/卡车/ 34)到服务器(PHP订户),数据库被更新并且收据/数据被发送回单卡车通道。

我们有一个在Firebase.io中工作的原型,但我们不需要firebase数据库,我们只需要实时传输。 firebase.io的一大特色就是它的亮点,我们可以一次订阅许多小型频道。这有助于减少有效负载,因为仅传输已更改的对象数据。

纠正我,如果我错了,但我认为推动者和pubnub将允许我为打开该网站的每个客户端创建100卡车pub/subs(在这个例子中)?

任何人都可以提供建议吗?

+0

如何让您的客户端代码在收到确认后删除更新?或者让卡车发送确认信息回到服务器,然后删除更新。两者都会将Firebase数据保持为“正在进行的更新”。 – 2013-04-04 11:47:37

+0

谢谢弗兰克!这也是我们的建议,当你只是想发送短暂的数据。客户只需在看到消息时将其“删除”即可“消息”。 – 2013-04-04 21:51:29

+0

但是请注意,在这种情况下,消息队列可能不是您想要的。如果您正在跟踪车辆的位置,为什么不在每次更新时重写位置?然后,你永远不会在Firebase上发布陈旧的消息 - 无论最后的位置如何。 – 2013-04-04 21:52:29

回答

0

[我的火力地堡工作]

火力地堡应继续很好地为您工作,即使你不需要持久性的特点。我们并不知道任何情况下,我们的持久性实际上让事情变得更加困难,并且在许多情况下,它实际上让您的生活变得更加轻松。例如,您可能希望能够询问“卡车的当前位置”,而无需等待下一次更新发送。

如果您遇到持久性对您而言实际上是负面的情况,我们很乐意听到它。这当然不是我们的意图。

此外 - 我们不是Firebase.io - 我们只是Firebase(尽管我们拥有firebase.io域名)。

+0

感谢评论安德鲁。我们与Firebase苦苦挣扎的一件事(可能是我们缺乏理解)是额外的数据层,我们必须与我们的数据库表保持同步。例如,如果mssql表已经直接更新/或通过第三方提要更新,那么它将与Firebase和所有实时客户端不同步。但是,如果客户端直接使用通道到数据库服务器来获取表格内容,那么我们不必管理第二个数据源。而且我们也获得了查询权力,这个firebase是currenlty有限的。 – johnstontrav 2013-04-05 08:33:27

+0

有两个很好的解决方案:(1)简单地将所有写操作直接通过AJAX直接发送到服务器,然后使用我们的REST API从服务器广播更改(2)在服务器上使用Node.js客户端,所以您会在发生更改时收到通知,并且您可以更新数据库。 由于它听起来像你正在使用PHP,选项#1可能是要走的路。这里有一个PHP的包装器,有人写了一个让PHP更容易调用REST调用的函数(注意,这是一个第三方项目 - 不是官方的):https://github.com/ktamas77/firebase-php – 2013-04-05 15:25:55

+0

我一直在测试你的想法(1)安德鲁和我认为这对我们很好。谢谢。 – johnstontrav 2013-04-08 09:27:35

2

我可以确认您可以使用Pusher来实现这一点 - 我为Pusher工作。

PubNub先前将每个通道计为一个连接,但他们现在似乎已经引入了多路复用。 This FAQ指出您可以通过多路复用连接支持100个频道。

因此,这两项服务将能够实现您正在寻找的内容。我也会通过这个Realtime Web Tech guide获得更多的选择。

+0

感谢leggetter,你知道,因为它没有明确表示在推销网站上,如果我可以使用PHP来订阅频道,所以我可以更新数据库。我知道我可以使用节点应用程序桥接PHP脚本,但我正在寻找直接链接到PHP。 Pubnub似乎是唯一一个拥有这种排序功能的人。 – johnstontrav 2013-04-04 21:30:37

+1

是的,PubNub有这个。另外还有一款名为[WrenchPusher]的推进器(https://github.com/westinpigott/WrenchPusher)。你打算运行PHP脚本作为守护进程吗?如果您不打算将PHP订户运行为守护程序,那么您可以让卡车在状态更改(事件)时向端点发出HTTP请求,更新数据库并通过实时服务提供商发布更改。这一切都取决于您希望您的地理定位准确无误(猜测) - 非常准确:然后持续连接显然会更好。 – leggetter 2013-04-05 23:08:21

+0

@leggetter说的都是真的。只是想补充一点,[PubNub有一个叫BLOCKS的新功能](https://www.pubnub.com/products/blocks/)。这意味着您不必订阅服务器(这对于您在多台服务器中进行扩展和正确操作可能很困难)。通过BLOCKS,您可以使用Node.js/Promises自定义REST调用(通过Node.js/Promise)从PubNub网络中为您的服务器或其他第三方服务提供自定义REST调用,并以高度可扩展,可靠的方式发布每条消息。 – 2016-10-05 17:37:57

相关问题