SignalR에서 비동기 프로그래밍을 테스트하는 코드가 있습니다. 이 코드는 10 초 후에 클라이언트에게 텍스트를 다시 보냅니다.
public class TestHub : Hub
{
public async Task BroadcastMessage(string text)
{
await DelayResponse(text);
}
async Task DelayResponse(string text)
{
await Task.Delay(10000);
Clients.All.displayText(text);
}
}
이 코드는 잘 작동하지만 예기치 않은 동작이 있습니다. 10 초 이내에 5 개의 메시지가 전송되면 클라이언트는 이전 "DelayResponse"메소드가 끝날 때까지 더 많은 메시지를 보낼 수 없습니다. 연결 당 발생하며 10 초 전에 연결을 닫았다가 다시 열면 클라이언트가 5 개의 메시지를 다시 보낼 수 있습니다. 크롬, 파이어 폭스, IE로 테스트합니다. 내가 실수했거나 신호기 제한입니까?
브라우저 제한에 도달했을 가능성이 큽니다. longPolling 및 serverSentEvent 전송을 사용하는 경우 각 전송은 별도의 HTTP 요청입니다. 응답을 지연 시키므로 이러한 요청은 더 오래 실행되고 브라우저는 동시에 열 수있는 연결 수에 제한이 있습니다. 한도에 도달하면 이전 연결 중 하나가 완료 될 때까지 새 연결이 열리지 않습니다. 동시 요청 제한에 대한 자세한 내용 : 브라우저의 최대 병렬 http 연결?
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다