Antworten:
Sie können dies sehr einfach tun, indem Sie:
Verbinden: http://senchalabs.github.com/connect/
Connects ist wie Rack in Ruby. Es gibt Ihnen eine zusätzliche Ebene, auf der Sie unter anderem mit Authentifizierung, Sitzungen und Cookies "spielen" können.
Eine andere Option ist die Verwendung von Frameworks:
Express.js: http://expressjs.com/
Es scheint das am häufigsten verwendete Framework von node.js zu sein. Ist wie Sinatra für Ruby und läuft über Connect.
Geddy: http://geddyjs.org/
Wenn Sie komplexere WebApps erstellen möchten, wählen Sie Geddy. Ist wie Rails für Ruby.
nodejs bietet eine grundlegende http-API. http ist zustandslos und Ideen für Sitzungen und Sitzungsvariablen sind in Frameworks / Protokollen vorhanden, die auf http aufbauen. http://en.wikipedia.org/wiki/Session_%28computer_science%29
Schauen Sie sich http://geddyjs.org/ oder http://expressjs.com/ als Beispiele für Webframeworks an, die mit Knoten erstellt wurden, die Sitzungen bereitstellen.
Laden Sie es einfach in den Memcache oder einen anderen Caching-Mechanismus. Ich würde Ihre Server nicht mit solchen Dingen belasten. Was ist der Sinn eines super schlanken Webservers, der sich an Dinge erinnern muss?
Ich würde auch versuchen, Ihre Website als Anwendung und nicht als Website zu entwickeln oder Ihre Website als Anwendung zu behandeln, die wunderbaren Funktionen von HTML5 wie lokalen Speicher / lokale Datenbanken zu nutzen und den Datenverkehr zwischen Server- und Client-Computern zu reduzieren .
Wenn alles andere fehlschlägt (oder die Site klein ist), schreiben Sie Ihre eigene Sitzungsklasse. Nicht so schwer. Vor allem, wenn es sich um eine In-Memory-Sache handelt. Setzen Sie eine Timer-Logik ein, um Sitzungen zu beenden, und los geht's. Verdammt in einer dynamischen Sprache wie JavaScript sollte ein Kinderspiel sein.
Die Struktur sollte ein Wörterbuch sein, wobei der Schlüssel die Sitzung und der Wert ein Objekt ist, das Details der letzten Kommunikation und Funktionen enthält (um den Zugriff auf bestimmte Funktionen zu ermöglichen). Fügen Sie eine Sweep-Funktion hinzu, um alte Sitzungen mit Zeitüberschreitung zu löschen. und Bingo. Ein grundlegender Sitzungsdienst. Eine grundlegende Überprüfung von "Ist Sitzungsschlüssel in der Liste ... Ja / Nein ... Details abrufen" ... und ich denke, das ist es ... oder gibt es eine Funktion, die mir fehlt?
Ich persönlich würde Tools von Drittanbietern so lange wie möglich meiden. Sand der Zeit verschiebt sich sehr schnell und Sie können sich immer auf selbst entwickelten Code verlassen.
Donalds Antwort ist gut - sobald Sie sich mit dem Zwiebelmuster der Connect-Middleware vertraut gemacht haben, müssen Sie entscheiden, welche Art von Sitzungsspeicher verwendet werden soll. Die Standardeinstellung in Express ist ein MemoryStore und ist nicht für die Verwendung in der Produktion vorgesehen. Hier sind einige Ihrer Möglichkeiten:
Mongo https://github.com/mikkel/express-session-mongo - Verwenden Sie unbedingt die Option 'native_parser: false'.
Redis https://github.com/visionmedia/connect-redis - Sehr gut, aber wenn Sie Redis nicht bereits für Pub / Sub oder Speicher verwenden, ist es möglicherweise nicht ideal.
Beachten Sie, dass es andere Möglichkeiten gibt - dies hängt von Ihrem Projekt ab. Suchen Sie nach etwas, das Sie mithilfe Ihres vorhandenen Technologie-Stacks einführen können.
Wenn Sie eine ernsthafte Webentwicklung mit Node.js suchen, verwenden Sie das Express-Framework . Es unterstützt Sitzungen.
Erstellen Sie das Express-Projekt mit den Optionen --sessions.
$ express --sessions
So installieren Sie Express:
$ npm install express -g
cookie-session
zu Ihrer package.josn
Arbeit hinzufügen .