2010-11-30 29 views
17

Soket.io'ya bir WebSocket bağlantısı yaparken bir kimlik doğrulama tanımlama bilgisini kolayca iletmenin bir yolu var mı? Şu anda, ayrı ayrı bunu şöyle zorunda:WebSockets ile socket.io'ya bağlanırken çerezler nasıl gönderilir?

socket = new io.Socket(document.location.hostname); 
socket.addEvent("connect", function() 
{ 
    // Send PHP session ID, which will be used to authenticate 
    var sessid = readCookie("PHPSESSID"); 
    this.send("{'action':'authenticate','sessionid':'"+sessid+"'}"); 
}); 

cevap

24
onlar HTTP dayanmaktadır beri WebSockets çerezler için destek var, ama Socket.IO kaynağı aracılığıyla hızlı bir göz bunun için hiçbir destek olduğunu ortaya koydu

Bu nedenle, çerezleri doğrudan kullanmak bu durumda geçerli bir çözüm değildir; ayrıca, Socket.IO kullandığınız için, kullanıcıların bir WebSocket aracılığıyla bağlanacakları garanti edilmez.

Bir bağlantının bir flaş soketi kullanması durumunda, Flash'ın kendi seti yerine Tarayıcı'nın çerezlerini göndermesi gerçekten çok zordur. Bu nedenle, doğrudan bir tanımlama bilgisi gönderseniz bile, Tarayıcıda ayarlanamaz Bir şişe soket bağlantısı durumunda.

Şu an için Soket.IO'ya yerleşik bir destek yok, bu nedenle, flaş yuvaları başarısız olacaktır.

this issue numaralı telefondan okuyabilirsiniz. Burada flash cookie problem ile ilgili bir soru bulunmaktadır.

En iyi çözüm, kendi protokolünüzün bir parçası olmaktır.

+4

Sadece ileride başvurmak üzere, bu sorun socket.io sürüm 0.7 ve üstü adreslerinde ele alınmıştır. – Chris

+5

Nasıl ele alındı? Açıklayabilir misin? – Damian