从客户端向 Sails 应用程序发送实时消息的最简单方法是使用 sails.io.js 库。此库允许您轻松地将套接字连接到正在运行的 Sails 应用程序,并提供用于向 Sails 路由 发出请求的方法,这些请求以与“常规”HTTP 请求相同的方式处理。
sails.io.js 库会自动添加到使用 <script>
标签的新 Sails 应用程序的默认 布局模板 中。当网页加载 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>
现在考虑这个更高级(且不太常见)的用例:让我们禁用急切(自动连接)套接字,而是手动创建一个新的客户端套接字。当它成功连接到服务器时,我们将使其记录一条消息
<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()
与发出 AJAX 请求非常相似,例如使用 jQuery 的 $.get()
方法。这是故意的——目标是无论请求来自何处,您都能够从 Sails 获取相同的响应。使用客户端套接字发出请求的好处是,Sails 应用程序中的 控制器操作 将能够访问发出请求的套接字,从而允许它将该套接字订阅到实时通知(请参阅 从服务器发送实时消息)。