fatihsarac adlı üyeden alıntı: mesajı görüntüle
mevzu node tarafıyla alakalı değil ama mevzu php tarafıyla alakalı.

şöyle açıklıyayım;

1. kullanıcımız php sayfamıza girdi, aynı anda kullanıcı adını kullanarak node / socket.io üzerinde bağlantı oluşturdum. node bu kullanıcı için kendi ID değerini oluşturdu (bağlantı bilgilerini).

2. kullanıcımız sayfa değiştirdi. otomatik olarak ne oldu? socket bağlantısı koptu. girdiği sayfada ne yaptık? tekrar node/socket.io bağlantısı oluşturduk. bu sefer ilk oluşan değerlerin tamamı değişti.

burada şöyle bir ihtiyaç doğuyor; php ile bağlantı sağladığımız kullanıcı bilgilerini sabitlemek. ne kadar sayfa değiştirirse değiştirsin, ne işlem yaparsa yapsın, php tarafında session da kaldığı süre boyunca node/socket.io tarafındaki bilgisi sabit kalsın.

malesef bu mümkün değil (en azından benim araştırmalarım ve denemelerim sonucunda).

çözüm var mı? var ama hamallık;

veritananında bir tablo oluştururuz. bu tabloda kullanıcı adını ve socket id'sini yazdıracağımız alanlar olur. kullanıcı her bağlandığında bu alanı güncelleriz ki diğer kullanıcılar ile kullanıcımız node üzerinden iletişime geçerse sorun olmasın.
Sayfa değiştirme işlemi yapmak nodejs kullandığın yerlerde ihtiyacın olmaması gereken bir durum değil mi ? Ayrıca session üzerinde tutabilirsin socket bilgisini ? Nasıl kendi login işlemi tutabiliyorsun onuda tutabilirsin. Bu arada tekrar connect olmak demek kullanıcı değiştiği anlamına gelmez. Söylediğim gibi socketi client'ta tutabildiğin gibi kullanıcıyı sockette yakalayabilirsin. Disconnect olması tekrar connect olması sorun değil. Sonuç itibariyle nodejs tarafı çökebilirde ? Yani tekrar connect gerektirebilecek durumlar elbet var. Bu bir sorun değil aslına bakarsan.

Gelelim senin sorunun asıl cevabına;

şimdi clients bir dizimiz olsun. Bu diziye kullanıcıları tanımlayalım. Örneğin clients["samet"] bu benim bağlantı bilgim olsun. Her connect oluşumda bu dizi elemanı benim olacaktır. Yani ahmet mehmet farketmez clients["samet"].socket dediği anda o bilgi bana gelir. Client'ın tekrar connect olması bu durumu etkilemez veya değişen bir durum olmaz. Socket sana yeni tanımlamalar yapsada sen tek yeri sorgular ve bakarsın.