Certo che la Facebook Chat va in Get sul server! Basta usare Firebug o qualsiasi software per ispezionare le richieste per accorgersene!
In prima approssimazione potresti fare un polling e richiamare un servizio sul server, la loro è una versione un po' più sofisticata che dà un effetto (artificioso) di real time lavorando più o meno così:
1) A apre la finestra di chat con B e il browser di A manda una Get al server che non risponde, quindi la Get rimane lì a girare in attesa, come quando apri una pagina e questa non si carica
2) Se la get va in timeout, ne viene avviata un'altra
3) Quando il server ha qualcosa da mandare ad A (tipo un messaggio di B, o B che ha iniziato a scrivere e quindi su A deve visualizzarsi "B is typing"), risponde a quella Get che è rimasta pending dando quindi l'effetto del realtime
4) Appena arriva la risposta, A istanzia una nuova Get per lo step successivo.
Poi magari se qualcuno è bravo, può incapsulare la logica delle richieste in una serie di classi javascript (e c# sul server) in modo che utilizzandole si abbia l'illusione di lavorare in push. Ma il web non funziona in push

Ciao!
m.