Создаешь список активных юзеров (тех, кто ищут кого либо сейчас) и по каким-то критериям определяешь связь. Лучшим критерием для начала будет время поиска. Тот кто дольше ищет, тот первым подключается.
Как все работает? пользователь в клиенте выбирает пол (не обязательно, но пусть будет), по нажатию кнопки "начать чат" клиент отправляет на сервер сообщение, мол вот парень хочет в чат. Сервер добавляет его в список активных. Далее проверяет весь список и если нашел к примеру девушку, отправляет к ней, не нашел девушку, отправляет к парню. Статус обоих меняется на "занят", при том в поле "кем" заносятся ид друг друга. Соответственно когда сервер получает от пользователя сообщение, он смотрит у этого пользователя, с кем тот общается и отправляет собеседнику это сообщение. Клиенты раз в секунду могут отправлять статус. Если клиент ничего не отправляет, видимо пользователь закрыл вкладку, значит его собеседник должен получить уведомление, а сам закрывший вкладку удаляется из списка текущих пользователей.Это простейший однопоточный случай.
Вам лучше знать, как вы видете этот чат и его возможности, а значит и реализацию лучше самим придумывать. К тому же, если не будете решать такие вопросы сами, то учиться программировать будет тяжело.