Socket IO ve Express ile ortak session kullanımı

Uzun bir aradan sonra tekrar merhaba, bu kez size ne Java ne de PHP’den bir örnek göstereceğim :) Yeni favorim Node.js!

Şimdi size Socket IO ve Express session’ı nasıl birbirine entegre edip Redis serverda saklayacağımızı anlatacağım.

Başlıca gerekli modüller:
session.socket.io: https://github.com/wcamarao/session.socket.io
connect-redis: https://github.com/tj/connect-redis
express-session: https://github.com/expressjs/session
socket.io : http://socket.io/

Öncelikle modüllerimizi aşağıdaki gibi ayarlıyoruz:

Burada önemli olan noktalar şunlar:

Kısmında serverımıza kurmuş olduğumuz Redis serverının adresini ve port numarasını tanımlıyoruz ve diyoruz ki Session Store olarak Redis’i kullan.

Çeşitli başka yazılımlar da var bunun için örneğin mongostore gibi ama Redis aralarında en hızlısı. Özellikle anlık değişen değişken değerleri için Redis’de saklamanız daha uygundur. Ancak kalıcı bilgiler ör: email, ad, soyad gibi değerleri MongoDB’de tutmanız daha yararlı olacaktır.

kısmındaki mysecret ifadesi sessionumuzu şifreleyen keydir. bunu daha sonra tekrar kullanacağız dilerseniz başta bir değişkene atıp oradan da çağırabilirsiniz pratiklik açısından.Ayrıca son satırdaki emrejs ismi bizim session ismimiz olacak, bunu da daha sonra kullanacağız.

Daha sonra aşağıdaki bölümü kodumuza ekliyoruz.

secret: daha önce kullanmış olduğumuz gizli anahtarımız ile aynı key olmalı.
store: sessionların nerede saklanacağını belirtiyoruz.
key: daha önce de kullandığımız gibi session ismimiz.
cookie.maxAge: oturum süresinin 1 saat olduğunu belirttik.

Gelelim can alıcı noktaya:

req.session.username ile sessionumuza username adında bir değer açtık ve içine gelen parametreyi kaydettik.

Şimdi socket bağlantımızdan bu sessiona nasıl erişeceğiz?

Gördüğünüz gibi klasik socketio syntaxı yerine yukarıdaki syntaxı kullandık ve 3. parametre olan session ile buna erişebildik.