2012-08-04 23 views
9

我的后端在Postgres。我正在使用Scala来构建它的API。Scala + Play + Akka。是否需要Backbone.js?

每当数据库发生变化时,我都希望通知我的Chrome扩展。我有几个关于这方面的问题:

  1. 我应该在这里实现websockets还是长时间轮询?
  2. 如果网络套接字,有没有什么好的例子,我该如何使用Scala + play + Akka和javascript?
  3. 我相信我必须实现一些称为观察者模式的东西,通知我的Chrome扩展如果数据有任何更改。有没有其他的模式可以让我用最少的数据库开销来完成这样的事情。
  4. 我应该使用Redis还是RabbitMQ来处理这个特定通知部分的事情?
+2

Play分发了几个示例应用程序。我发现“WebSocket Chat”示例程序对于学习处理Scala/Play/Akka/JavaScript/WebSockets非常有用。 – Destin 2012-08-06 21:08:16

+0

如果您的通知不是“实时”(=每隔几秒),您可能需要考虑只需每隔X分钟/小时/天就进行一次“拉动”并用新状态更新浏览器动作按钮。 – 2012-08-08 08:26:20

+0

拉通知将是实时的。因此,这个问题。 – Hick 2012-08-08 15:43:34

回答

2

1)我会用http://socket.io/

3)这是个有趣的问题。观察者模式通常用于前端。我会建议你看看这篇文章http://addyosmani.com/largescalejavascript/。它帮助我更好地构建我的应用程序。它基本上是具有EventBroker/Mediator之间的Pub/Sub模式。将发布者和订阅者分开是理想的。您可以将EventBroker放置在您的应用程序名称空间中。通过这种方式,您可以访问模块中的消息总线,而无需始终通过模块传递参考。

4)我们已经在网站上使用redis进行实时/时间通知,这些通知具有类似pinterest的功能。 Redis的性能给我留下了深刻的印象。