bluemansiiz adlı üyeden alıntı: mesajı görüntüle
NodeJS serverinizi biraz optimize etmeniz gerekiyor. Timeout durumu var çünkü standartı 10 saniye. Eğer 10 saniye boyunca işlem yapmazsanız sunucudan düşüyorsunuz. Bunun için clientları serverları datasız konuşturacak ufak bir ping fonksiyonu yapabilirsiniz.

https://github.com/LearnBoost/Socket...ring-Socket.IO

Yukarıdaki linkte bazı optimizasyon ayarları mevcut inceleyebilirsiniz.

Şimdi 2. işlemi yapabilmek kısmına geleyim hemen.

io.sockets.on('connection', function(socket) 
{
	
	//Kullanıcı bağımsız idsi
	var userID = socket.handshake.query.userID;
	//Kullanıcı bilgilerini alalım.
	clients[userID] = { socket: socket };
	           	
	socket.on('Function1', function() {
	});
	socket.on('Function2', function() {
	});
	socket.on('Function3', function() {
	});
	
});
Şimdi aşağıda gördüğünüz gibi connection fonksiyonu içerisinde yazdığınız tüm fonksiyon connect olmuş kişi için geçerlidir. userID değişkeni kişi disconnect olana kadar onun olmuş oluyor. İçerideki tüm işlemlerde kullanılabilir. Burada querystring ile yaptım ben header ilede yapılabilir. Yani kullanıcı sockete bağlı sürece tekrar socket.connect(); göndermeye gerek yok.

Disconnect durumunuda aşağıdaki gibi kullanırsanız.

  socket.on('disconnect', function(socket) {	
delete clients[userID];
});
Kullanıcı gittiğinde onunla etkileşimimizi kesmiş oluruz.

Her bir connection bir kişi olmuş oluyor böylece. Her bir istek bir kullanıcı değil.
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.