Sails 提供了兩個 API 用於與已連接的 Socket 客戶端通訊:高階的 resourceful pubsub API 和低階的 sails.sockets API。
Resourceful PubSub (發布/訂閱) API 提供了一種高階方式,讓 Socket 訂閱 Sails 模型類別和實例。完全有可能僅使用此 API 創建豐富的即時體驗 (例如,聊天應用程式)。Sails 藍圖使用 Resourceful PubSub 自動發送關於新模型實例和現有實例變更的通知,但您也可以在自訂控制器操作中使用它們。
建立一個新的 User 模型實例並通知所有感興趣的客戶端
// Create the new user
User.create({
name: 'johnny five'
}).exec(function(err, newUser) {
if (err) {
// Handle errors here!
return;
}
// Tell any socket watching the User model class
// that a new User has been created!
User.publishCreate(newUser);
});
sails.sockets
sails.sockets
API 允許直接與 Socket 進行更低階的通訊,使用的方法包括 sails.sockets.join()
(將 Socket 訂閱到發送到特定 "房間" 的所有訊息)、sails.sockets.leave()
(取消 Socket 訂閱房間) 以及 sails.sockets.broadcast()
(向一個或多個房間中的所有訂閱者廣播訊息)。
將 Socket 加入 "funSockets" 房間
sails.sockets.join(someSocket, "funSockets");
向 "funSockets" 房間廣播 "hello" 訊息。此訊息將被所有已 (1) 使用 sails.sockets.join()
在伺服器端加入 "funSockets" 房間,且 (2) 使用 socket.on('hello', ...)
在客戶端添加了 "hello" 事件監聽器的客戶端 Socket 接收。
sails.sockets.broadcast("funSockets", "hello", "Hello to all my fun sockets!");