2011-10-12 2 views
11

SignalR을 사용하기 위해 기존 사이트를 업데이트하려고합니다. 내 사이트는 데이터 변경에 대한 제 3 자 서비스를 조사하고 이에 대한 마술을 실시하며 클라이언트는 몇 분마다 한 번씩 설문 조사를 실시하여 업데이트 내용을 새로 고칩니다.신뢰할 수 없거나 일시 중지 된 & 다시 연결된 연결이있는 SignalR?

SignalR은 클라이언트에서 폴링을 제거하는 좋은 방법 인 것처럼 보이지만, SignalR이 처리하는 방법을 알고 싶습니다. 잠시 동안 일시 중지되었을 수있는 모바일 웹 앱과 관련하여 & 연결이 다시 연결되었습니다. 그 동안 놓친 모든 업데이트를 자동으로 협상하고 대기열에 넣을 수 있습니까? 아니면 이러한 경우 클라이언트가 처음부터 다시 동기화해야합니까? 나는 보았지만 이것에 대한 어떠한 문서도 찾을 수 없었습니다.

답변

10

클라이언트가 마지막으로 본 메시지 ID를 추적하므로이 모든 것이 가능합니다. 메시지를 놓친 경우 다음 번 서버로 돌아가서 마지막 메시지를 본 이후로 모든 메시지를 요청합니다.

기본적으로 SignalR의 서버 측은 메시지를 메모리에 저장하지만 (몇 초마다 제거합니다), 클라이언트가 오프라인 상태가 될 것이라고 생각하는 경우 일부 영구 저장소 (참조)로 유지하도록 변경할 수 있습니다. 따라 잡기.

SignalR이 메모리에 항목을 저장하는 동안 자신의 앱 로직에 메시지를 직접 저장할 수도 있습니다. 정말 응용 프로그램에 따라 다릅니다.

모바일 클라이언트에 대한 특별한 지원은 추가하지 않았지만 모바일 클라이언트를 위해 필요한 로컬 저장소에 메시지 ID를 유지할 수 있습니다.

이러한 세부 사항은 그다지 구체적이지는 않지만 SignalR을 사용하여 원하는 모든 것을 할 수 있습니다.

+0

쿨, 고마워. 추가 크레딧 :이 같은 것을하는 데모 앱/코드를 가르쳐 주시겠습니까? –

+0

아니, 할 수 없어. :). SignalR은 아주 새롭고 아직 모바일 장치로는 많은 작업을하지 못했습니다. – davidfowl

+0

아. 모바일이라는 사실은 직접 관련이 없지만 ** 네트워크 중단 (_ * 기침 * AT & T_) **, 경고없이 일시 중지/종료 등 **을 할 수있는 곳입니다. 저레벨 후크가 필요합니다 - 요청의 ID 인 IMessageStore - 나머지를 직접 빌드합니다. 충분히 일반화 할 수 있다면 공유 할 것입니다. –

0

읽기 Understanding and Handling Connection Lifetime Events in SignalR, 특히 이러한 섹션 :

이 문서는 2014 년에 작성되었으며 기본적으로 2011-2012 시대의 여러 가지 또는 불완전한 StackOverflow SignalR 관련 질문/답변을 사용하지 않습니다.

관련 문제