Sails 公开了两个 API 用于与已连接的套接字客户端进行通信:更高层次的 resourceful pubsub API 和更低层次的 sails.sockets API。
Resourceful PubSub (发布/订阅) API 提供了一种高级方法,用于将套接字订阅到 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 允许使用更低级别的通信直接与套接字通信,使用诸如 sails.sockets.join()
(将套接字订阅到发送到特定“房间”的所有消息)sails.sockets.leave()
(取消订阅套接字从房间)和 sails.sockets.broadcast()
(将消息广播到一个或多个房间的所有订阅者)。
将套接字添加到房间“funSockets”
sails.sockets.join(someSocket, "funSockets");
向“funSockets”房间广播“hello”消息。此消息将被所有已(1)使用 sails.sockets.join()
在服务器上添加到“funSockets”房间,以及(2)使用 socket.on('hello', ...)
在客户端添加“hello”事件监听器的客户端套接字接收。
sails.sockets.broadcast("funSockets", "hello", "Hello to all my fun sockets!");