схема довольно простая
сервер держит вебсокеты, внтури идет протокол общения основаный на чем угодно
получил сообщение от клиент1 - отправил клиент2 - записал в базу - пришло от клиент2 подтверждение - обновил в базе что доставлено.
все
если не доставлено, при следующем коннекте клиент2 - выдать недоставленные ему