2012-06-07 7 views
0

현재 jQuery 클라이언트 구현과 함께 CometD 서버를 사용하고 있습니다. 클라이언트가 정보 (즉, 문자열)를 검색 할 수 있도록 REST API를 내 서버에 보유하는 효율적인 방법이 있는지 알고 싶습니다. 한 번만 문자열을 검색하면 더 이상 서비스를 사용할 필요가 없습니다.CometD 용 REST API

현재 내가하고있는 일은 서비스 채널을 사용하고 서버에 리스너를 추가하는 것입니다. 그런 다음 클라이언트가이 채널에 임의의 메시지를 보내도록합니다. 메시지를 수신하면 서버는 문자열을 검색하여 동일한 채널을 사용하여 클라이언트로 다시 브로드 캐스트합니다.

그러나 나는 매우 둥근 방식을 사용하고 있으며, 클라이언트가 문자열을 수신 할 때 더 이상 채널을 청취 할 필요가 없습니다. 더 좋은 방법이 있습니까?

업데이트 : 다른 실시간 채널에도 서버를 사용하고 있습니다. 따라서 게시 - 방송 기능으로 CometD를 선택했습니다.

답변

0

문자열 정보를 요청한 클라이언트에게 돌려 보내고이 정보를 다른 클라이언트에 브로드 캐스팅 할 필요가없는 경우 CometD이 필요하지 않습니다. 간단한 서블릿 만 있으면 충분합니다. 심지어는 REST가 필요하다).

다른 한편으로 문자열 정보를 여러 클라이언트에 브로드 캐스팅해야한다면 CometD가 작업에 적합한 도구이며 결국 복잡한 일은 아닙니다.

클라이언트 :

cometd.init("http://server/cometd"); 
cometd.subscribe("/info", function(m) 
{ 
    // Do something with the message, then disconnect 
    cometd.disconnect(); 
}); 
cometd.publish("/service/myservice", {}); 

서버 : 여기

@Service 
class MyService 
{ 
    @Inject 
    private BayeuxServer bayeux; 
    @Session 
    private LocalSession session; 

    @Listener("/service/myservice") 
    public void processMyService(ServerSession s, ServerMessage m) 
    { 
     String info = retrieveInfo(); 
     // Broadcast 
     bayeux.getChannel("/info").publish(session, info, null); 
    } 
} 

당신이 CometD annotated services에 대한 자세한 정보를 찾을 수 있습니다.

+0

죄송합니다. CometD 아키텍처를 사용하는 다른 채널도 추가하는 것을 잊었습니다. 서블릿 방법을 알고 있지만 CometD 서버와 통합 할 수 있습니까? –