從客戶端向 Sails 應用程式發送即時訊息最簡單的方式是使用 sails.io.js 函式庫。這個函式庫讓您能夠輕鬆地將 sockets 連接到正在運行的 Sails 應用程式,並提供方法來向 Sails 路由發出請求,其處理方式與「常規」HTTP 請求相同。
sails.io.js 函式庫會自動新增到使用 <script>
標籤的新 Sails 應用程式的預設 版型範本中。當網頁載入 sails.io.js
腳本時,它會嘗試建立新的 客戶端 socket 並將其連接到 Sails 應用程式,並將其作為全域變數 io.socket
公開。
包含 sails.io.js
函式庫,並使用自動連線的 socket 向 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>
現在考慮這個更進階(且較不常見)的使用案例:讓我們停用急切(自動連線)的 socket,而是手動建立新的客戶端 socket。當它成功連線到伺服器時,我們將讓它記錄訊息
<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>
您可能已經注意到,客戶端 socket 的 .get()
與發出 AJAX 請求非常相似,例如使用 jQuery 的 $.get()
方法。這是故意的——目的是讓您能夠從 Sails 獲得相同的回應,無論請求來自何處。使用客戶端 socket 發出請求的好處是,您的 Sails 應用程式中的 控制器動作將可以存取發出請求的 socket,使其能夠訂閱該 socket 以接收即時通知(請參閱從伺服器發送即時訊息)。