2012-09-03 105 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