2014-06-07 1 views
1

우리는 저지 SSE를 사용하여 클라이언트에 이벤트를 푸시합니다. 우리는 자바 스크립트 측면에서 이벤트에 등록하려면 다음 코드를 사용하는저지 2.8 클라이언트가 5 개 이상인 경우 SSE 등록이 대기합니다.

,

var source = new EventSource(<URL>); 
source.onmessage = notifyEvent; 

URL ==> 각 URL에 다른 이벤트 등록이 해당 이벤트에 등록을 담당하는 것입니다. 예 :

http://localhost:8080/testapp/notification/comment/{userID} ==> used to register for comment notification for a specific user. 

http://localhost:8080/testapp/notification/like/{userID} ==> used to register for like event for a specific user 

notifyEvent ==> 우리가 어떤 이벤트를받을 때 호출되는 정의 된 방법입니다.

클라이언트가 이벤트 6 개 ()에 등록하려고 시도 할 때까지 등록 및 이벤트 알림은 완벽하게 작동합니다. 5 이벤트, 등록 및 알림이 완벽하게 작동하는 경우.

6 번째 이벤트에 등록하려고하면 서버 측 EventOutput 데이터가 성공적으로 반환되지만 클라이언트 측에서 jsp 파일은 계속로드됩니다.

왜 6 번 이벤트 등록에 정확히 걸려 있습니까?

두 개의 다른 클라이언트 응용 프로그램이 실행중인 경우 5 개의 이벤트에 대해 각각 등록하면 모든 이벤트 알림 항목 (등록 및 알림)이 완벽하게 작동합니다.

+0

는 여섯 번째 요청을 디버깅 시도? – Bill

+0

여섯 번째 요청은 남은 요청과 동일합니다. 다른 차이는 없습니다. 같은 유형의 이벤트 등록을 6 회 시도하면 중단됩니다. –

답변

1

6 개의 연결 만 브라우저에서 언제든지 사용할 수 있습니다. 이것은 브라우저의 제한 사항입니다.

가로 이미 대답 SSE(EventSource): why no more than 6 connections?

+1

6이 가장 일반적인 제한 사항이지만 대부분의 브라우저에서 임의로 사용자 지정할 수 있습니다. (그러므로 주어진 클라이언트의 경우 6보다 적을 수도 있습니다.) –

1

자세한 내용은이 링크를 참조, 6은 일반적인 브라우저의 한계입니다.

저지 프레임 워크에 익숙하지 않지만 모든 이벤트에 단일 연결을 사용하면됩니다. SSE는 소켓을 열린 상태로 유지하고 크기 조정을 시도 할 때 소켓이 부족한 리소스가됩니다.

두 가지 방법이 있습니다. 나의 개인 선호도 (제 8 장인 my book에서 정당화)는 "이벤트"또는 이와 비슷한 항목을 클라이언트에 보내는 JSON 객체에 추가하는 것입니다. 그런 다음 이벤트 핸들러에서 간단한 스위치를 사용하여 각 이벤트를 처리 할 실제 함수를 호출하십시오. 다른 방법은 각 data: 줄 앞에 event: 줄 앞에 SSE에 내장 된 기능을 사용하는 것입니다.

event:comment 
data:{"msg":"What a smashing StackOverflow answer!"} 
    <-- Blank line 
: 서버가 전송하는 새로운 코멘트가있는 경우

그래서 고객은 다음 (URL의 마지막 부분은 그들이에 가입 할 이벤트를 지정하는 방법이 될 수있는 곳) http://localhost:8080/testapp/notification/comment+like에 연결 한 것

그리고 그것은 전송과 같은 새가있는 경우 :

event:like 
data:{"from":234552,"to":4733} 
    <-- Blank line 
+0

우리는 다음과 같이했습니다. 모든 종류의 이벤트를 등록하기 위해 하나의 리소스 (WebService)에 대한 모든 요청이 들어옵니다. 클래스는 맵이 유지 관리됩니다. 어떤 클라이언트가 어떤 이벤트에 등록되어 있는지, 해당 클라이언트는 동일한 사실을 통보 받게됩니다. 응답에서 우리는 우리가 보내고있는 통지 유형을 보낼 것이고, 클라이언트 측은이를 적절히 처리 할 것입니다. –

관련 문제