2015-09-05 36 views
14

我的目標:Sails.js簡單的私人信息(發佈/訂閱和模型)

創建使用Sails.js有可能的最佳實踐的


假設最簡單的代碼私人短信平臺:


我的問題:

  • 我能有一個插座手錶只有某些新車型(例如找到用戶ID匹配發件人或收件人ID)或我需要設置房間?選擇性看待似乎更容易,但文件似乎並不支持它。
  • 如果我的任何上述假設或問題都沒有意識到我的目標的最佳途徑,那麼什麼是實現使用帆私人信息最簡單的方法?

我試了一下:

+3

每一個問題應該是這一個清晰。 –

+0

您是否試圖僅支持直接聊天?或者可以有多人聊天的房間? –

+0

乍一看,房間似乎是最簡單的解決方案。不幸的是,沒有選擇性的.watch。 –

回答

6

我估計是用帆實施socket.io,如果我沒有記錯,只是稱爲插座的最簡單方法。

所有控制器可以與socket.io(客戶端)IIRC被調用。 我採取的方法是創建一個名爲消息的模型,然後只需創建消息的幾個端點。如果你想使用模型(pub/sub),可以訂閱你想要的模型。您可以將每個用戶訂閱到一個模型,即使您擁有足夠的模型。

什麼我以前做的是手工做的,當我收到一個消息,我將它發射到正確的客戶,立竿見影。但是,如果你想要寫更少的代碼可能你只需要用戶訂閱模型Model.subscribe()http://sailsjs.org/documentation/reference/web-sockets/resourceful-pub-sub/subscribe) 所以當消息被添加到數據庫,那麼你可以把它送到你需要誰。

下面是建立在sails.js頂部的聊天的另一個例子:https://github.com/asm-products/boxychat-old

+0

如果每個客戶正在觀看新的消息模型,那麼他們會收到意味着給其他用戶的消息,對吧?我想確保服務器只將消息發送給接收客戶端,因此如果可能的話,選擇性觀看將會很棒。 subscribe()方法僅根據文檔獲取_existing_數據庫記錄中的更改(它不會接收.publishCreate()消息)。選擇性手錶()是否存在?如果不是,做消息傳遞最簡單的方法是什麼? – smileham

+1

我有一個連接到userID的套接字列表,當我發送一條消息時,比如'POST/message/user1',代碼中發生的事情是我搜索user1,如果它在我的列表中有一個套接字(來自redis ),然後將消息發送給他'list ['user1']。emit('privateMessage',msg);' – DevAlien

+0

當然,這是可行的,但這似乎並不比使用房間容易。你爲什麼選擇房間? – smileham