这个项目能做什么
Hummingbird 是一个为 Node.js 编写的自托管站点追踪和分析存储服务器。它向访问者提供一个 1x1 的追踪像素;浏览器的 GET 请求携带由小型 JavaScript 代码片段生成的追踪数据。
要求与安装
它需要 node.js v0.8.0 或更高版本。README 中的设置步骤包括:克隆仓库,运行 npm install 获取依赖项,如果需要地图功能,可选地将 MaxMind 的 GeoLiteCity.dat GeoIP 数据库下载到根目录。服务器通过 `node server.js` 启动。
仪表盘与部署
仪表盘默认运行在 8080 端口,可以在 config/config.js 中将其禁用以用于生产环境。仪表盘是由 public/ 提供的纯 HTML,因此任何 Web 服务器都可以托管它。README 警告说,如果仪表盘不应公开可见,则应对其进行安全保护,通常是通过将其置于带有基本身份验证(basic auth)的 nginx 或 apache 之后。仪表盘的 'listen' 函数接受第二个参数用于绑定接口——例如 "127.0.0.1" 仅限本地主机,或 "0.0.0.0" 用于所有接口——且追踪像素应在单独的端口上运行,以便从外部世界访问。
设置追踪
client/hummingbird.js 包含一个触发 Hummingbird 事件的小脚本。它可以粘贴到页面主体中,或者上传并通过 script 标签引用。调用不带参数的 HummingbirdTracker.track() 会发送标准参数(如页面 URL);也可以附加任意数据,例如 HummingbirdTracker.track({logged_in: true}),这些数据可用于 Hummingbird 的指标中,以便在后端过滤事件。
架构
Hummingbird 分为两个部分:一个记录用户活动的 Node.js 追踪服务器,以及一组显示该活动的 JavaScript 组件(widgets)。服务器在可能的情况下通过 WebSockets 将所有活动广播给客户端,不支持时则回退到 Flash sockets 或长轮询。Hummingbird.WebSocket 对象以 JSON 对象形式接收来自服务器的 WebSocket 事件,各个组件订阅某个指标并注册处理函数,每当该指标出现时即调用该函数。
自定义指标与组件
指标位于 lib/metrics 中并自动加载。每个指标包含一个处理函数,每当发生新的用户事件时就会被调用,并将数据存储在 `data` 对象属性中,该属性按指标指定的间隔发送给客户端。total_views.js 被用作基础示例,cart_adds.js 被用作基于查询参数过滤的示例。内置组件(Counter, Logger, Graph)演示了如何接入服务器数据;一个极简的组件示例是 public/js/widgets/logger.js。组件是一个原型扩展自 Hummingbird.Base 并实现 onMessage 的对象。
README 还提供了一个技巧:若要在本地运行 UI 同时从生产服务器流式传输数据,请使用类似 http://localhost:8080/?ws_server=your-host.com&ws_port=12345 的 URL。
项目说明
Hummingbird 采用 MIT 许可证。README 列出了 Michael Nutt, Benny Wong 以及多位其他贡献者。
评论
0 评分人数达到10人后显示
登录后参与讨论。