2014-04-25 3 views
1

C++ 백엔드에 새로운 데이터가있을 때마다 사용자 그룹이 비동기 적으로 데이터를받을 수있는 웹 응용 프로그램을 만들고 싶습니다. 따라서 새로운 사용자가 생기면 구독자 목록에 추가되고 C++ 백엔드에 그룹의 새 데이터가있을 때마다 모든 사용자에게 게시됩니다.libwebsockets는 게시/구독 기능을 제공합니까?

libwebsockets은 C++에서 사용할 수있는 좋은 라이브러리 인 것 같습니다. 유일한 문제는 주로 콜백 시스템에서 설계된 것 같습니다. 따라서 클라이언트가 요청할 경우에만 데이터가 전송됩니다.

나는 비슷한 문제를 가진이 게시물을 찾았지만이 그렇게 할 수있는 가장 좋은 방법입니다 모르겠어요 : How do I send async data via libwebsocket?

어떤 도움을 이해할 수있을 것이다. 감사합니다.

답변

1

발견! libwebsockets를 사용하면 연결된 모든 사용자에게 libwebsocket_callback_on_writable_all_protocol(*protocol)을 사용하여 특정 프로토콜로 브로드 캐스트 할 수 있습니다. LWS_CALLBACK_SERVER_WRITEABLE은 프로토콜의 콜백 함수에 의해 처리되며 여기에서 데이터를 보낼 수 있습니다.

그래서, 일반적으로, 내 두 번째 프로토콜 (비 HTTP 하나)을 사용

나는 libwebsocket_callback_on_writable_all_protocol(protocols + 1)와 프로토콜의 콜백 함수 내 코드의 어떤 부분에 방송하는 일부 데이터가있을 때마다

static int callback_linux_shell(struct libwebsocket_context * context, struct libwebsocket *wsi, enum libwebsocket_callback_reasons reason, void *user, void *in, size_t len) { 
    switch (reason) { 
    ... 
     case LWS_CALLBACK_SERVER_WRITEABLE: 
      libwebsocket_write(wsi, my_data, my_data_size, LWS_WRITE_TEXT); 
      break; 
    ... 
    } 
}