2017-11-10 24 views
1

나는 각 사용자가 복수 주문을 가질 수있는 웹 사이트가 있습니다. 각 주문에는 상태이 있습니다. 백그라운드 프로세스는 필요에 따라 각 주문의 상태를 계속 업데이트합니다. 나는 그의 명령의 상태에 관해 실시간으로 사용자에게 알리고 싶다. 따라서 특정 사용자의 모든 주문을 반환하는 API 끝점을 개발했습니다. 클라이언트 측에서는 주문을 표시하는 React 구성 요소를 개발 한 다음 AJAX 요청을 API에 수행하여 모든 주문과 주문 상태를 확인한 다음 React가 필요할 경우 자동 업데이트합니다.웹 사이트의 실시간 업데이트 - 1 초당 1 건의 아약스가 나쁜 습관입니까?

사용자의 모든 주문이 나쁜 습관을 갖기 위해 1 초당 AJAX 통화를하고 있습니까? 내가 할 수있는 다른 전략은 무엇인가?

답변

1

예, 그렇습니다. Socket을 사용하여이를 수행 할 수 있습니다. 살펴보기 Socket.IO

편집 : 요점은 AJAX를 사용하여 설계된 기능으로 수행 할 수있는 작업을 시뮬레이트하는 이유는 무엇입니까? 소켓은 이런 종류의 일을하기 위해 만들어진 것입니다.

예를 들어 사용자가 인터넷 연결이 끊어진 경우를 상상해보십시오. Socket.IO를 사용하면 아주 잘 처리 할 수 ​​있습니다. 그러나 나는 AJAX로 그렇게 쉬울 것이라고 생각하지 않습니다.

Socket.IO는 확장성에 대해 생각하면서 어떤 전송 장치를 사용하더라도 성능을 발휘하도록 설계되었습니다. 연결이 가능한지 여부에 따라 정상적으로 성능이 저하되는 방식은 훌륭하며 서버가 가능한 한 과부하가 걸릴 수있는 범위 내에서 폭 넓은 잠재 고객을 확보해야 함을 의미합니다.

AJAX가 속임수를 쓰겠지만 최고의 디자인은 아닙니다.

+0

더 자세히 설명해 주시겠습니까? 왜 나쁜 습관입니까? – Ivan

+0

소켓이 이벤트에 기반한 연결을 설정하기 때문에 더 낫다 –

+0

안녕하세요 @ 이반, 방금 왜이 소켓과 아약스가 아닌지에 대해 이야기하는 내 대답을 편집했습니다. –

0

이 질문에 대한 대답은 하나도 없습니다.

먼저 채팅 앱이 아니므로 1 초 미만의 지연으로 인해 사용자 경험이 많이 변경되지 않습니다.

는 는 (전체 부하)가 얼마나 많은 사용자, 동시 사용자가 자신의 주문을 기다리고 있습니다 얼마나 많은 당신이 사용중인 인프라, 할

:

그래서 기술적 인 이유로 우리를 잎, 정말 여러 가지 요인에 따라 달라집니다 당신은 다른 중요한 것을 만들거나 재미있게 코딩하는 데 더 많은 시간을 보내고 싶습니까?

소수의 사용자가있는 경우 초당 한 번만 쿼리하면 아무 문제가 없으며 쉽고 적은 유지 관리 오버 헤드가 있으며 이미 코딩했다고합니다.

동시 사용자 수가 수십 명 이상인 경우 상태를 기다리는 경우 웹 소켓을 사용하는 것이 가장 좋습니다.

인프라 측면에서 볼 때 너무 많은 웹 소켓이 비싸기 때문에 (일부 클라우드 호스팅은 소켓 수에 제한이 있습니다) 경로와 함께 가고 싶다면이를 명심하십시오.