Swift Vapor 프레임 워크를 살펴보고 있습니다.Swift Vapor에서 비동기 적으로 생성 된 본문 청크를 사용하여 응답 본문을 생성하는 방법
SSL 링크에서 얻은 데이터를 타사 시스템 (별표 PBX 서버 ..)에서 클라이언트로 보내지는 응답 본문으로 매핑하는 컨트롤러 클래스를 만들려고합니다.
그래서 '완전한 응답'이 생성 될 때까지 기다리지 않고받은 텍스트 줄 (SSL 연결에서 별도로 획득)을 보내야합니다. 나는 그것이 갈 방법이 될 줄 알았는데
return Response(status: .ok) { chunker in
for name in ["joe\n", "pam\n", "cheryl\n"] {
sleep(1)
try chunker.send(name)
}
try chunker.close()
}
:
이 예제를보고.
하지만 Vapor 서버에 연결하면 REST 호출이 결과로 세 줄을 받기 전에 루프가 완료 될 때까지 대기한다는 것을 알 수 있습니다.
어떻게하면 chunker.send (name)가 루프를 완료하기를 기다리지 않고 문자를 클라이언트로 보내도록 시도 할 수 있습니까?
실제 코드에서 컨트롤러 메소드는 클라이언트에 대한 HTTP 연결을 장시간 열어 잠재적으로 클라이언트에 Asterisk 활동 데이터를 전송하는 즉시 전송할 수 있습니다. 따라서 각 .send (name)는 실제로 마지막 .close() 호출을 기다리지 않고 즉시 클라이언트에 데이터를 전달해야합니다. 더 나은 결과를 생성하지 않은 시도의 chunker.flush()를 추가
은 ..
안녕하세요! 메모 해 주셔서 감사합니다. 내가 발견 한 사실은 청킹이 실제로 작동한다는 것입니다. Paw와 Postman 모두 신호의 흐름을 보여줄 정도로 친절하지 않았습니다. – aaberga
Safari, otoh, 모든 일이 일어나는대로 보여줍니다. 그리고 예, 웹 소켓은 이런 종류의 어플리케이션에서 더 이해가됩니다. 하지만 지금은 Vapour가 무료로 (실제로 Telnet 스타일의 링크를 사용하여 Asterisk에 연결하는) SSL 소켓을 테스트하는 빠른 것을 찾고있었습니다. – aaberga
미친 듯이 (HTTP는이 작업을 수행하지 않습니다 ...) GET 통화는 Safari 웹 페이지로 프록시 된 원격 PBX에서 SSL 데이터 흐름을 얻는 데 1 시간 이상 걸릴 수있었습니다. 진짜는 분명히 웹 소켓으로 이동합니다! 그러나 Vapor 안에있는 모든 맛있는 것들에 감사드립니다 !! – aaberga