Как я могу реализовать систему публикации / подписки (сервер-push) с AKKA на Java? - PullRequest
2 голосов
/ 02 октября 2011

Когда я знакомлюсь с http://akka.io/,, я не могу понять, как сделать push-запрос к серверу.

После подключения клиента к серверу, как сервер может отправлять сообщения клиенту? Например, если клиент подписался на получение котировок акций с сервера котировок. Или если сервер перенаправляет сообщения чата от одного чата к другому.

НЕПРАВИЛЬНАЯ ИДЕЯ. Я понимаю, что клиент может передать сообщение на сервер с IP-адресом / портом клиента, а затем сервер может инициировать новое подключение к клиенту и отправлять сообщения. Это не сработает, поскольку клиент может находиться за брандмауэром. Сервер должен отправлять сообщения обратно клиенту через соединение с сокетом, инициированное клиентом.

Документация AKKA бесполезна, и мои поиски в Google не были плодотворными.

Кто-нибудь выяснит, как это сделать?

Ответы [ 2 ]

2 голосов
/ 11 октября 2011

Горстка решений, если вы хотите сделать свою жизнь более сложной, но, о, какая отвратительная.

Ну, я немного подумал о том, как finagle и akka будут переплетаться.Есть некоторые совпадения, но я чувствую, что в то время как Akka гораздо богаче для написания логики приложения, ему не хватает связующего звена / коммуникационного слоя, отчасти из-за необходимости вписывать все в модель актера.Я вижу finagle как node.js на стероидах (или, по крайней мере, при статической типизации :). В частности, finagle выглядит как отличная основа для обработки уровня 5 до уровня 7 ниже.

Если finagle набирает обороты, яМожно было бы подумать, что apis вокруг веб-сокетов будет расти, чтобы отразить то, что было сделано с socket.io для node.js, но это выглядит просто.Я ищу оправдание, чтобы сделать это сам:)

В любом случае, если бы вы были осторожны с тем, как вы адаптировались к актерской модели, вы могли бы остаться полностью в Scala.

Но, как Викторпредложил вам подумать об использовании веб-сокетов (в этом я уверен на 99%, что Lift вам в этом поможет), Comet при переходе через http.В целом webhooks - это хороший стиль для пабов в Интернете, хотя, очевидно, даже для этого потребуется, чтобы брандмауэры принимали входящие соединения.

Лично я давно хотел, чтобыМарк Ноттингем замечательно элегантен Каналы кеширования , чтобы выполнять паб-саб, просто используя http, чтобы стать стандартом, но можно создать достойное приближение, если вы управляете как клиентским, так и серверным кодом.

0 голосов
/ 02 октября 2011

Akka 2.0 будет поддерживать повторное использование входящего канала для исходящих сообщений, что даст вам то, что вы запрашиваете, до тех пор, пока вы не будете вынуждены признать, что он плохо работает с брандмауэрами, или просто использовать другой транспорт, Comet, WebSockets. или, может быть, верблюд.

...