2011-10-02 4 views
2

http://akka.io/에 익숙해지면서 서버 푸시를 수행하는 방법을 알 수 없습니다.Java에서 AKKA를 사용하여 게시/가입 시스템 (서버 푸시)을 구현하려면 어떻게해야합니까?

클라이언트가 서버에 연결 한 후 서버가 클라이언트에 메시지를 푸시하는 방법은 무엇입니까? 예를 들어, 고객이 견적 서버에서 주식 시세를 수신하기 위해 구독 한 경우. 또는 서버가 한 채팅 클라이언트에서 다른 채팅 클라이언트로 채팅 메시지를 라우팅하는 경우

잘못된 아이디어 : 클라이언트가 클라이언트의 IP/포트를 사용하여 서버에 메시지를 전달한 다음 서버가 클라이언트에 새로운 연결을 시작하고 메시지를 푸시 할 수 있다는 것을 알고 있습니다. 클라이언트가 방화벽 뒤에있을 수 있기 때문에 이것은 작동하지 않습니다. 서버는 클라이언트가 시작한 소켓 연결을 통해 클라이언트에 메시지를 다시 보내야합니다.

AKKA 문서는 도움이되지 않으며 Google 검색이 도움이되지 못했습니다.

누구나 어떻게해야할까요?

답변

0

Akka 2.0은 아웃 바운드 메시지에 대해 인바운드 채널을 다시 사용하도록 지원합니다. 그러면 아웃 바운드 메시지가 방화벽에서 제대로 작동하지 않거나 다른 전송, Comet, WebSockets 또는 아마도 Camel.

2

당신의 인생을 더 어렵게 만들고 싶다면 몇 가지 해결책을 찾으십시오.

글쎄, 나는 finagle과 akka가 어떻게 얽힐 지에 대해 조금 생각해 왔습니다. 약간의 오버랩이 있지만, Akka는 서비스 로직을 작성하는 데 훨씬 더 풍부하지만, 서비스 접착제/통신 레이어로는 부족합니다. 부분적으로는 모든 것을 액터 모델로 작업해야하기 때문입니다. 좀 더 구체적으로 말하자면, 얇은 막이 낮은 레이어 7에 레이어 5를 처리하기위한 훌륭한 프레임 워크 인 것처럼 보입니다.

피그 그가 어떤 견인력을 얻는다면, 나는 생각할 것입니다. 웹 소켓 주위의 api는 node.js에 대해 socket.io를 사용하여 수행 한 작업을 반영하여 커지지 만 단순 해 보입니다. 내가 직접 할 변명을 찾고 있어요 :)

어쨌든, 당신이 배우 모델에 적응하는 방법에 조심한다면, 당신은 완전히 스칼라에 머물 수 있습니다.

그러나 Viktor가 WebSocket (나는 99 %가 Lift가 당신을 도울 것이라고 확신한다.), Comet을 http 이상으로 사용하는 것에 대해 생각해 보라고 제안했다. 더 일반적으로 webhooks은 웹의 게시판 하위에 대한 멋진 스타일이지만 방화벽이 들어오는 연결을 허용해야하는 것은 분명합니다.

개인적으로 Mark Nottingham의 훌륭하게 우아한 Cache Channels은 http를 표준으로 사용하여 pub sub를 수행하기를 희망했지만 클라이언트와 서버 코드를 모두 제어하는 ​​경우 괜찮은 근사를 만들 수 있습니다.

+0

그 생각을위한 좋은 음식, 감사합니다. –