前言
在现代 Web 开发中,实时的通讯方式越来越流行。而 Socket.IO 是一种非常流行的实时通讯技术。Sails.js 是一种使用 Socket.IO 的完整 Web 应用程序框架,也是一个用于构建 Node.js 中端应用的 MVC 框架。在 Sails.js 中,sails-hook-socket 是一个很重要的包,它提供了非常方便的应用程序开发方式。本文将讲解如何使用 npm 包 sails-hook-sockets。
简介
sails-hook-sockets 包是 Sails.js 的一个插件,它可以轻松地将 Socket.IO 集成到 Sails.js 应用程序中,极大地简化了编写实时应用程序的难度。sails-hook-sockets 库的主要优点有:
- 集成了 Socket.IO 库,你不用再去独立地引入 Socket.IO 库。
- 提供了非常方便的配置方式,简单易用。
- 支持 Sails.js 的所有功能。
安装
安装 sails-hook-sockets 的方式非常简单,只需要执行以下命令即可:
--- ------- ------------------
使用
sails-hook-sockets 的使用非常容易,只需执行以下步骤:
- 配置
配置 sails.config.sockets 对象:
---------------------- - - ----------- -------------- ------------ ------ ----------------- -------------------------- -------------- ----- -- -------- --------- ------- --
其中,transports: ['websocket'] 说明只开启 websocket 的传输协议,这也是 Socket.IO 最常用的一个传输协议;pingTimeout: 25000 表示超时时间为 25 秒;onlyAllowOrigins: ['http://localhost:1337'] 表示只允许从 http://localhost:1337 这个地址发起的请求;authorization 参数表示是否需要对服务进行身份验证,如果为 true,则需要客户端在连接时携带身份验证信息(如 cookie 、 token 等),这样服务端才能对身份进行验证,验证通过后才能建立连接。
- 创建/添加事件
在 sails.config.sockets.afterHooks 中设置响应事件,如:
---------------------- - - ---------- --------- --- -- - ----------------------- -- -------- ---------------------------------------------------- ---------- - -------- -------- -- -------- -- --- ------ ------ ------ ----- -- --
其中,sails.sockets.broadcast 就是一个事件处理程序,可以将消息广播到所有连接到服务器的客户端;sails.sockets.getId(socket) 是一个函数,可以得到当前客户端的 socket id,也可以通过它实现点对点的消息传递。
- 启动
最后,在 Sails.js 项目的启动文件(如 app.js)中注册 hooks ,如下所示:
--------------------------- ----------------------------
以上两行代码初始化 Socket 钩子并启动服务。
Demo:
---------------------- - - ----------- --------- --- -- - ------------------------- -- -------- ------------------------------- ---------- - -------- -------- --- ------ ----- - --
定于 myHook 钩子,使用 sails.sockets.broadcast(roomId, eventName, data [, ignoredSockets])
方法,向房间 room
推送数据。
结语
sails-hook-sockets 包为 Sails.js 应用程序提供了非常方便和快速的 Socket.IO 集成方式,使得开发者可以非常容易地实现实时的通讯功能。本文介绍了 sails-hook-sockets 的安装和使用方式,希望对开发者有所帮助。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/77210