2013-11-17 3 views
0

Я использую Apache Thrift для определения протокола. Я хотел бы, чтобы клиент получал асинхронные сообщения с сервера.Получение асинхронных сообщений бережливым клиентом

service ServerService { 
    oneway void async_server_hello(1: string message_from_client); 
    string sync_server_hello(1: string message_from_client); 
} 

service ClientService { // how to use it from the server side? 
    oneway void async_client_hello(1: string message_from_server); 
} 

Я знаю, как подключиться к серверу, отправьте синхронизации и асинхронные сообщения на сервер, но я не знаю, как отправить асинхронное сообщение от сервера подключенного клиента.

(Python или Erlang код является предпочтительным, но любой другой язык будет делать)

+0

Биджи-обмен сообщениями невозможно с Apache Thrift. Сервер всегда реагирует на запросы клиентов (за исключением, например, в режиме oneway). Если вы хотите, чтобы сервер вызывал клиента обратно, клиент должен настроить собственный сервер. Другим вариантом могут быть длительные вызовы для имитации желаемого поведения. – JensG

+0

@JensG: спасибо, напишите как ответ, чтобы я мог (к сожалению) принять его –

ответ

1

биди-сообщениями не представляется возможным с помощью Apache бережливости. Сервер всегда реагирует на запросы клиентов (за исключением, например, в режиме oneway). Если вы хотите, чтобы сервер вызывал клиента обратно, клиент должен настроить собственный сервер. Другим вариантом могут быть длительные вызовы для имитации желаемого поведения.

Я видел, по крайней мере one fork on Github doing Bidi-Messaging, но

  • Я не знаю, что состояние этого/эти проекты (ов), а
  • , что материал не является частью проекта Apache сберегательного ,

Есть куча билетов JIRA, посвященных этой теме, суть, однако, что бережливость не будет поддерживать это в ближайшем будущем, потому что одна из целей является простота, биди не сами по себе, esepcially через транспорты и языки.

Итак, есть решения, но нет встроенного способа, который сделает это автоматически для вас.

Смежные вопросы