クライアントからSailsアプリにリアルタイムメッセージを送信する最も簡単な方法は、sails.io.jsライブラリを使用することです。このライブラリを使用すると、実行中のSailsアプリに簡単にソケットを接続でき、通常のHTTPリクエストと同じように処理されるSailsルートにリクエストを行うためのメソッドが提供されます。
sails.io.jsライブラリは、新しいSailsアプリのデフォルトのレイアウトテンプレートに<script>
タグを使用して自動的に追加されます。Webページがsails.io.js
スクリプトをロードすると、新しいクライアントソケットの作成が試みられ、Sailsアプリに接続し、グローバル変数io.socket
として公開します。
sails.io.js
ライブラリを含め、自動的に接続されたソケットを使用してSailsアプリの/hello
ルートにリクエストを行います
<script type="text/javascript" src="/js/dependencies/sails.io.js"></script>
<script type="text/javascript">
io.socket.get('/hello', function responseFromServer (body, response) {
console.log("The server responded with status " + response.statusCode + " and said: ", body);
});
</script>
ここで、より高度な(あまり一般的ではない)ユースケースを考えてみましょう。Eager(自動接続)ソケットを無効にし、代わりに新しいクライアントソケットを手動で作成します。サーバーへの接続が成功したら、メッセージをログに記録させます。
<script type="text/javascript" src="/js/dependencies/sails.io.js" autoConnect="false"></script>
<script type="text/javascript">
var mySocket = io.sails.connect();
mySocket.on('connect', function onConnect () {
console.log("Socket connected!");
});
</script>
クライアントソケットの.get()
が、例えばjQueryの$.get()
メソッドを使用するようなAJAXリクエストと非常に似ていることに気付いたかもしれません。これは意図的なものです。目標は、リクエストの送信元に関係なく、Sailsから同じレスポンスを得られるようにすることです。クライアントソケットを使用してリクエストを行うことの利点は、Sailsアプリのコントローラアクションがリクエストを行ったソケットにアクセスできるため、そのソケットをリアルタイム通知にサブスクライブできることです(サーバーからのリアルタイムメッセージの送信を参照)。