Sailsは、接続されたソケットクライアントと通信するための2つのAPIを公開しています。1つは高レベルのリソースフル Pub/Sub APIで、もう1つは低レベルのsails.sockets APIです。
リソースフル Pub/Sub(Publish/Subscribe)APIは、ソケットをSailsモデルクラスおよびインスタンスにサブスクライブするための高レベルな方法を提供します。このAPIだけでも、リッチなリアルタイム体験(例:チャットアプリ)を作成することが完全に可能です。Sailsのブループリントは、リソースフルPub/Subを使用して、新しいモデルインスタンスや既存のインスタンスへの変更に関する通知を自動的に送信しますが、カスタムコントローラーアクションでも使用できます。
新しい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()
(1つ以上のルームのすべてのサブスクライバーにメッセージをブロードキャストする)のようなメソッドを使用して、ソケットと直接低レベルで通信できます。
ソケットを "funSockets" ルームに追加する
sails.sockets.join(someSocket, "funSockets");
"hello"メッセージを "funSockets" ルームにブロードキャストします。このメッセージは、(1) サーバー側でsails.sockets.join()
を使用して "funSockets" ルームに追加され、(2) クライアント側でsocket.on('hello', ...)
を使用して "hello" イベントのリスナーを追加したすべてのクライアントソケットによって受信されます。
sails.sockets.broadcast("funSockets", "hello", "Hello to all my fun sockets!");