Для крестиков ноликов хватит банального Long Poll.
Т.е. игрок походил - данные отправились на серв, что он походил и как это сделал.
Когда юзер сделал ход, то скрипт асинхронно с таймаутом стучит на серв, не походил ли оппонент, но серв отвечает не сразу, а спит до тех пор пока не произойдёт событие.
Можете почитать про Long Poll на этом сайте в разделе Comet.
Данный алгоритм не единственный, но наиболее простой в реализации (Polling не беру в расчёт ибо бяка

)