À propos du projet
Hummingbird est un serveur de stockage d'analyses et de suivi de site auto-hébergé écrit pour Node.js. Il sert un pixel de suivi 1x1 aux visiteurs ; la requête GET du navigateur transporte les données de suivi générées par un petit snippet JavaScript.
Exigences et installation
Il nécessite node.js v0.8.0 ou supérieur. Les étapes de configuration du README consistent à cloner le dépôt, exécuter npm install pour récupérer les dépendances, et optionnellement télécharger la base de données GeoIP GeoLiteCity.dat de MaxMind dans le répertoire racine si la fonctionnalité de carte est souhaitée. Le serveur est démarré avec `node server.js`.
Tableau de bord et déploiement
Un tableau de bord s'exécute sur le port 8080 par défaut et peut être désactivé pour une utilisation en production dans config/config.js. Le tableau de bord est en HTML simple servi depuis public/, donc n'importe quel serveur web peut l'héberger. Le README avertit que le tableau de bord doit être sécurisé s'il ne doit pas être visible publiquement, généralement en le plaçant derrière nginx ou apache avec une authentification basique. La fonction 'listen' du tableau de bord accepte un second argument pour l'interface à lier — par exemple "127.0.0.1" pour localhost uniquement, ou "0.0.0.0" pour toutes les interfaces — et le pixel de suivi doit être exécuté sur un port séparé pour rester accessible depuis l'extérieur.
Configuration du suivi
client/hummingbird.js contient un petit script qui déclenche un événement Hummingbird. Il peut être collé dans le corps de la page ou téléchargé et référencé avec une balise script. L'appel à HummingbirdTracker.track() sans arguments envoie des paramètres standards tels que l'URL de la page ; des données arbitraires peuvent être jointes, par exemple HummingbirdTracker.track({logged_in: true}), et ces données peuvent être utilisées dans les métriques de Hummingbird pour filtrer les événements sur le backend.
Architecture
Hummingbird est organisé en deux parties : un serveur de suivi Node.js qui enregistre l'activité des utilisateurs via le pixel de suivi, et un ensemble de widgets JavaScript qui affichent cette activité. Le serveur diffuse toute l'activité aux clients via WebSockets lorsque possible, avec un repli vers les sockets Flash ou le long polling. L'objet Hummingbird.WebSocket reçoit les événements WebSocket du serveur sous forme d'objets JSON, et les widgets individuels s'abonnent à une métrique et enregistrent des fonctions de gestion appelées chaque fois que cette métrique est présente.
Métriques et widgets personnalisés
Les métriques se trouvent dans lib/metrics et sont chargées automatiquement. Chaque métrique contient une fonction de gestion invoquée à chaque nouvel événement utilisateur, et stocke les données dans une propriété d'objet `data` qui est émise aux clients à des intervalles spécifiés par la métrique. total_views.js est donné comme exemple basique, et cart_adds.js comme exemple de filtrage sur les paramètres de requête. Les widgets standard (Counter, Logger, Graph) démontrent comment se connecter aux données du serveur ; un exemple de widget minimal se trouve dans public/js/widgets/logger.js. Un widget est un objet dont le prototype étend Hummingbird.Base et implémente onMessage.
Le README note également un conseil : pour exécuter l'interface utilisateur localement tout en diffusant des données depuis un serveur de production, utilisez une URL telle que http://localhost:8080/?ws_server=your-host.com&ws_port=12345.
Notes sur le projet
Hummingbird est sous licence MIT. Le README mentionne Michael Nutt, Benny Wong et un certain nombre de contributeurs supplémentaires.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.