Существует два способа сделать уведомления в системе RPC: модель push и модель pull. В модели pull клиент периодически запрашивает у сервера, доступны ли какие-либо уведомления. Сервер должен хранить их до тех пор, пока клиент не получит их (или пока не истечет срок их действия). Как вариант, клиент может иметь блокирующий вызов RPC, который блокирует, пока следующее событие не станет доступным, а затем сразу же возвращается. Это прекрасно работает с CORBA, но не очень хорошо работает с SOAP или XML-RPC, поскольку реализации HTTP, как правило, не готовы оставлять соединение открытым в течение нескольких часов.
В модели «push» производитель будет вызывать RPC для потребителя, делая его потребителем сервером. Это не слишком хорошо работает с SOAP или XML-RPC, поскольку клиент, как правило, не готов принять роль сервера, а брандмауэры могут препятствовать обратному вызову. Таким образом, периодическая тяга является наиболее реалистичным подходом.
P.S. Возможно, вы заметили, что я не следовал вашей терминологии: вы не можете отправить события . Событие - это то, что происходит. Вы можете только нажать на уведомление, которое является информацией о том, что событие произошло.