SignalR로 보장 된 메시지 전달을 수행하는 방법은 무엇입니까?

드미트리 카자 코프

C # 및 SignalR을 사용하여 실시간 클라이언트-서버 애플리케이션을 개발 중입니다. 가능한 한 빨리 클라이언트에게 메시지를 보내야합니다. 서버의 내 코드 :

for (int i = 0; i < totalRecords; i++)
{
    hubContext.Clients.Client(clientList[c].Key).addMessage(
    serverId, RecordsList[i].type + RecordsList[i].value);
    Thread.Sleep(50);       
}

지연이 50ms 이상이면 모든 것이 완벽하게 작동하지만 지연이 없거나 지연이 50ms 미만이면 일부 메시지가 누락됩니다. 지체없이 최대한 빨리 메시지를 보내야합니다. 메시지가 수신되었는지 확인하고 다른 메시지를 보낸 후에 만 ​​확인해야한다고 생각합니다.
올바른 방법으로 수행하는 방법은 무엇입니까?

홀더 73

SignalR은 메시지 전달을 보장하지 않습니다. SignalR은 클라이언트 메서드를 호출 할 때 차단하지 않기 때문에 발견 한대로 매우 빠르게 클라이언트 메서드를 호출 할 수 있습니다. 안타깝게도 클라이언트는 메시지를 보낸 즉시 즉시 수신 할 준비가되어 있지 않을 수 있으므로 SignalR은 메시지를 버퍼링해야합니다.

일반적으로 SignalR은 클라이언트 당 최대 1000 개의 메시지를 버퍼링합니다. 클라이언트가 1000 개가 넘는 메시지보다 뒤처지면 메시지가 누락되기 시작합니다. 이 DefaultMessageBufferSize 1000을 늘릴 수 있지만 이렇게하면 SignalR의 메모리 사용량이 늘어나고 메시지 전달이 보장되지 않습니다.

http://www.asp.net/signalr/overview/signalr-20/performance-and-scaling/signalr-performance#tuning

메시지 전달을 보장하려면 직접 확인해야합니다. 제안한대로 이전 메시지가 확인 된 후에 만 ​​메시지를 보낼 수 있습니다. 각 메시지에 대한 ACK 대기가 너무 느린 경우 한 번에 여러 메시지를 ACK 할 수도 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

작성된 게시물을 Flask의 자체보기로 전달하는 방법은 무엇입니까?

분류에서Dev

보기로 전달시 URL을 변경하는 방법은 무엇입니까?

분류에서Dev

get 메소드로 값이 전달 된 URL을 다시 작성하고 다른 페이지로 전달하는 방법은 무엇입니까?

분류에서Dev

Angular에서 요소로 정의 된 지시문에 ngStyle을 전달하는 방법은 무엇입니까?

분류에서Dev

SQL Server 저장 프로 시저에 값 행을 전달하는 방법은 무엇입니까?

분류에서Dev

'redux-form'에서 장식 된 형태로 소품을 전달하는 방법은 무엇입니까?

분류에서Dev

장고 원시 쿼리-Postgres 배열 값을 매개 변수로 전달하는 방법은 무엇입니까?

분류에서Dev

백본이 model.save를 수행 할 때 계산 된 값을 서버로 다시 보내는 것을 중지하는 방법은 무엇입니까?

분류에서Dev

VueJ의 로컬 저장소에서 새로 생성 된 행을 '감시'하는 방법은 무엇입니까?

분류에서Dev

SQL 다른 순서로 확장 된 행을 정렬하고 유지하는 방법은 무엇입니까?

분류에서Dev

저장 프로 시저 데이터 집합 및 월별 집계가 포함 된 SSRS 보고서- "빈"달을 처리하는 방법은 무엇입니까?

분류에서Dev

저장 프로 시저 데이터 집합 및 월별 집계가 포함 된 SSRS 보고서- "빈"달을 처리하는 방법은 무엇입니까?

분류에서Dev

암호로 보호 된 SSH 사용자에 대한 포트 전달을 금지하는 방법은 무엇입니까?

분류에서Dev

로컬 웹 서버를 실행하지 않고 HTML을 내장 된 WebView로 보내는 방법은 무엇입니까?

분류에서Dev

xmlhttp.open ()에 지정된 파일의 값을 PHP 파일로 전달하는 방법은 무엇입니까?

분류에서Dev

사용자 입력을 지정된 이메일로 보내는 방법은 무엇입니까?

분류에서Dev

Spring AOP / AspectJ는 메소드의 실행 시간을 로깅하지만 인수를 전달하는 방법은 무엇입니까? (스프링 부트 API)

분류에서Dev

저장 프로 시저를 사용하여 여러 값을 전달하는 방법은 무엇입니까?

분류에서Dev

VIM : 지정된 오류 메시지 형식으로 "errorformat"을 설정하는 방법은 무엇입니까?

분류에서Dev

Entity Framework를 통해 저장 프로 시저에 null 값을 전달하는 방법은 무엇입니까?

분류에서Dev

Await 함수가 완료된 후에 만 코드 실행을 보장하는 방법은 무엇입니까?

분류에서Dev

이메일이 실수로 전달되는 것을 방지하는 방법은 무엇입니까?

분류에서Dev

여러 모델을 asp mvc보기로 전달하는 가장 간단한 방법은 무엇입니까?

분류에서Dev

AVFoundation을 사용하여 미리보기 된 (확대 된) 이미지를 사진으로 저장하는 방법은 무엇입니까?

분류에서Dev

지정된 사용자 URL로 @MessageMapping으로 컨트롤러에 메시지를 전달하는 방법은 무엇입니까?

분류에서Dev

두 개의 브리지 된 MQTT 브로커간에 조건부로 메시지를 전달하는 방법은 무엇입니까?

분류에서Dev

Android NDK 수신 된 DatagramPacket을 C 함수에 인수로 전달하는 방법은 무엇입니까?

분류에서Dev

Scenic을 사용하여 한 장면에서 다른 장면으로 메시지를 보내는 방법은 무엇입니까?

분류에서Dev

AngularJS 사용자 지정 지시문을 부트 스트랩 사전로드 된 모달에 삽입하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    작성된 게시물을 Flask의 자체보기로 전달하는 방법은 무엇입니까?

  2. 2

    보기로 전달시 URL을 변경하는 방법은 무엇입니까?

  3. 3

    get 메소드로 값이 전달 된 URL을 다시 작성하고 다른 페이지로 전달하는 방법은 무엇입니까?

  4. 4

    Angular에서 요소로 정의 된 지시문에 ngStyle을 전달하는 방법은 무엇입니까?

  5. 5

    SQL Server 저장 프로 시저에 값 행을 전달하는 방법은 무엇입니까?

  6. 6

    'redux-form'에서 장식 된 형태로 소품을 전달하는 방법은 무엇입니까?

  7. 7

    장고 원시 쿼리-Postgres 배열 값을 매개 변수로 전달하는 방법은 무엇입니까?

  8. 8

    백본이 model.save를 수행 할 때 계산 된 값을 서버로 다시 보내는 것을 중지하는 방법은 무엇입니까?

  9. 9

    VueJ의 로컬 저장소에서 새로 생성 된 행을 '감시'하는 방법은 무엇입니까?

  10. 10

    SQL 다른 순서로 확장 된 행을 정렬하고 유지하는 방법은 무엇입니까?

  11. 11

    저장 프로 시저 데이터 집합 및 월별 집계가 포함 된 SSRS 보고서- "빈"달을 처리하는 방법은 무엇입니까?

  12. 12

    저장 프로 시저 데이터 집합 및 월별 집계가 포함 된 SSRS 보고서- "빈"달을 처리하는 방법은 무엇입니까?

  13. 13

    암호로 보호 된 SSH 사용자에 대한 포트 전달을 금지하는 방법은 무엇입니까?

  14. 14

    로컬 웹 서버를 실행하지 않고 HTML을 내장 된 WebView로 보내는 방법은 무엇입니까?

  15. 15

    xmlhttp.open ()에 지정된 파일의 값을 PHP 파일로 전달하는 방법은 무엇입니까?

  16. 16

    사용자 입력을 지정된 이메일로 보내는 방법은 무엇입니까?

  17. 17

    Spring AOP / AspectJ는 메소드의 실행 시간을 로깅하지만 인수를 전달하는 방법은 무엇입니까? (스프링 부트 API)

  18. 18

    저장 프로 시저를 사용하여 여러 값을 전달하는 방법은 무엇입니까?

  19. 19

    VIM : 지정된 오류 메시지 형식으로 "errorformat"을 설정하는 방법은 무엇입니까?

  20. 20

    Entity Framework를 통해 저장 프로 시저에 null 값을 전달하는 방법은 무엇입니까?

  21. 21

    Await 함수가 완료된 후에 만 코드 실행을 보장하는 방법은 무엇입니까?

  22. 22

    이메일이 실수로 전달되는 것을 방지하는 방법은 무엇입니까?

  23. 23

    여러 모델을 asp mvc보기로 전달하는 가장 간단한 방법은 무엇입니까?

  24. 24

    AVFoundation을 사용하여 미리보기 된 (확대 된) 이미지를 사진으로 저장하는 방법은 무엇입니까?

  25. 25

    지정된 사용자 URL로 @MessageMapping으로 컨트롤러에 메시지를 전달하는 방법은 무엇입니까?

  26. 26

    두 개의 브리지 된 MQTT 브로커간에 조건부로 메시지를 전달하는 방법은 무엇입니까?

  27. 27

    Android NDK 수신 된 DatagramPacket을 C 함수에 인수로 전달하는 방법은 무엇입니까?

  28. 28

    Scenic을 사용하여 한 장면에서 다른 장면으로 메시지를 보내는 방법은 무엇입니까?

  29. 29

    AngularJS 사용자 지정 지시문을 부트 스트랩 사전로드 된 모달에 삽입하는 방법은 무엇입니까?

뜨겁다태그

보관