서버에 전달 된 인수가 API 요청, 양식 제출 또는 아약스 요청 등일 경우 지정하지 않으므로 상대방 구현에 차이가 있습니다. 그러나 ColdFusion 서버 끝은 매우 유사해야하며 기본적으로 3 가지 문제가 있습니다. 시간대, 시간 불일치 및 대기 시간.
표준 시간대 문제를 해결하려면 인수를 UTC 시간으로 전달해야 할 수 있습니다. ColdFusion과 함께 시간을 비교하면 당신은 같은 것을 할 것 :
<cfif DateDiff("s", Variables.PassedTimestamp, DateConvert("Local2UTC", Now())) EQ 30>
<!--- Exactly 30 seconds difference between timestamps --->
</cfif>
을하지만 전송 시간이 서버의 시간과 동기화되어 있는지 모르겠어요. 이를 돕기 위해 상대방이 시간을 쿼리하고 그에 따라 시간을 조정하거나 자신의 시간을 에코 백하는 방법을 제공 할 수 있습니다.
타임 싱크와 원래 논의 된 타임 스탬프의 전송은 둘 다 대기 시간에 시달릴 것입니다.네트워크를 통한 모든 통신은 대기 시간이 다르며 대기 시간이 다양합니다. 위치 및 인터넷 연결 유형은 프로토콜 유형보다 많은 영향을 줄 수 있습니다. 응답 시간을 얻고 시간 길이를 반으로 줄이고 타임 스탬프에 추가하는 등의 작업을 수행 할 수는 있지만 여전히 모든 서버가 ping에 응답하지는 않습니다.
또한 서버의 코드와 다른 쪽에서도 대기 시간이 도입됩니다. 이를 줄이려면 상대방이 가능한 한 요청의 끝과 가까운 시간 소인을 계산하도록하고 가능한 한 빨리 시간 소인을 계산하는 코드를 생성하십시오. 가능한 한 Application.cfm | cfc 상단에 요청 시간을 설정하여 ColdFusion에서이 작업을 수행 할 수 있습니다. 당신의 응답에 표시되지 않습니다, 응답 후 경과
DateDiff("s", Variables.PassedTimestamp, DateConvert("Local2UTC", Request.Now))
만약, 대신, 당신은 루프를 원하는하고 30 일까지 초 :
<cfset Request.Now = Now()>
그리고 한 다음에 검사 코드를 변경 대기 시간이 응답을 다른 쪽 끝으로 지연시키기 때문에 30 초 후에 발생합니다.
정확히 30 초를 얻는 것은 불가능하지만 더 가까이 갈 수있는 조치를 취하십시오. 약 30 초가 경과했는지 확인하기 만하면 충분합니다.
정확한 시간은 타임 스탬프에서 30 초가 필요합니다. 당신이 말한 모든 것이 합리적이고 내 결론은 같았습니다 ... DB/Ram에 아마도 시간을 저장하지 않는 한. 그래서 여기에 간다 ...... 만약 내가 처음 서버 시간을 살펴보고 요청을 받았다면 이것이 요청 시작일 것이다. 내 시간대 밖에서 앱을 사용하기 때문에 요청이 항상 시간 초과 된 것처럼 보이는 문제가 생깁니다. 나는 애플 리케이션이 이것을 다르게 처리 할 것이라고 확신한다. – Prometheus
다른 방법. 사용자가 먼저 요청을합니다.> GET TIME. 그런 다음 두 번째 호출에서이 시간을 사용합니다. – Prometheus
웹 소켓이 있으면 이벤트를 발생시키고 타임 스탬프를 보내고 서버를 다시 작동시켜 30 초 마커를 보냅니다 .... 몇 밀리 초가 지나면 닫을 수 있습니다. 브라우저에서. –