2012-09-03 76 views
1

在过去的几周中,我已经使用HTML5 Websockets和node.js与socket.io构建了一个小型通知系统。 还有一些我还没有解决的问题。HTML5 Websocket + Node.js实时通知系统

我读过使用node.js的实时通知应该是最好的性能解决方案vs长轮询等,因为非阻塞I/O操作。

现在假设我们必须通知此用户的朋友。就像“我买了一个新的iPhone”。如何让node.js实时通知特定用户1:n?直到知道我只有发送和接收消息1-1通信。 这意味着我必须首先检查facebook api friendlist,并找出哪个facebook_id以某种方式与哪个socket_id连接。然后检查用户的隐私设置,如果他想接收通知,然后发送并将其保存到数据库中。

所以对我来说这某种程度上似乎不是最有效的解决方案......

目前我会用蒙戈-DB本地驱动程序的Node.js并请有serversided的JavaScript实现数据库操作。 我仍然需要实现facebooks javascript sdk才能获取好友列表,但我会遇到用户隐私设置问题。这不会破坏非阻塞I/O的所有优点吗?

你是怎么解决这个问题的。对我来说,这似乎很复杂。

非常感谢。

+1

我会认真考虑使用redis发布/订阅这个。使客户订阅自己的频道或频道,然后当用户发送消息时,只需将其发布到目标用户/组。 –

+0

这听起来不错。我试试看。 – zer02

回答

3

你不应该去Facebook去检查朋友列表等。 你应该缓存它们,我假设用户登录,如果是这样的解决方案 似乎很容易。

  1. 获取用户。
  2. 检查发件人是否是他的朋友
  3. 检查收件人是否希望收到邮件。

btw,redis的速度要快很多。

编辑: 如果您担心用户数据不会更新 并且这就是为什么您不缓存您应该检查Real-time Updates

+0

嗨,谢谢。我只是担心,我的缓存列表不是最新的。 – zer02

+1

zer02我更新了我的答案:) –

+0

谢谢我会看看 – zer02