2012-04-24 5 views
4

클라이언트 (데스크톱 또는 모바일)에서 호스트 된 서버로 데이터를 스트리밍하려고합니다. 많은 양의 데이터가 아니라 1/10 초마다 1 바이트입니다. 그러나 데이터를 즉시 스트리밍해야하고 (버퍼링하지 않아야 함) 오랜 시간 (예 : 최대 10 분) 연결을 유지해야합니다.HTTP를 통해 클라이언트에서 서버로 데이터를 스트리밍 할 수 있습니까?

서버가 호스팅되기 때문에 소켓을 사용할 수 없기 때문에 http 만 사용할 수 있습니다.

서버 측에서는 클라이언트에 연결하고 있다면 영구 연결을 사용하고 응답 스트림에 쓰는 것만 할 수 있습니다.

클라이언트가 서버에 지속적으로 연결되어 있고 요청 스트림에 쓰고있는 역순으로이를 수행하는 방법이 있습니까?

명확화 : 이 클라이언트 -> 서버 통신을 영구적 인 HTTP 연결로 할 필요는 없습니다. 가능한 경우 궁금한 점이 있습니다. 따라서 계획된 서버 - 클라이언트 영구 http와 대칭을 가질 수 있습니다. 연결.

내가들은 바로는 개인 http 게시물을 수행하고 같거나 비슷한 대기 시간을 달성 할 수 있어야합니다.

답변

1
내가 가서 것 같습니다 내 자신의 질문에 대한 답변을 제공합니다

:

그것은 클라이언트 -> 서버에서 지속적인 HTTP 연결을 할 기술적 하지만 아직 아무도 있기 때문에 그것을 구현되지 것 개별 HTTP 요청을 작성하는 일반적인 방법을 사용하는 것은 모든 사람의 목적에 따라 충분히 빠르다.

그래서 결국 WebRequest.Create와 HttpWebRequest 클래스를 사용하고 프레임 워크가 KeepAlive를 처리하고 있다는 것을 신뢰함으로써 결국 끝났습니다. 그리고 현실 세계의 성능은 여전히 ​​남아 있지만 프로토 타입은 충분히 빠르다고합니다.

+0

현실 세계에서 충분히 빠르지 않았습니까? – Felix

+0

@nissemand 나는 비공식적으로 크로스 컨트리 (미국)를 테스트했고, 좋은 응답 시간 (아마 250ms 이하)이 아주 좋은 것처럼 보였습니다. 그리고 그것은 클라이언트 -> 서버 -> 다른 클라이언트였습니다. – PhilChuang

+0

굉장한, 이것이 효과가 있다고 생각합니까? 더 많은 양의 데이터가 필요합니까? vdieo라고 해? – Felix

0

AFAIK, IIS에서 WCF를 호스팅 할 때 스트리밍이 작동하지 않습니다.

this CodeProject article은 WCF 4.5에서 수정되었다고 밝혔습니다.

클라이언트가 1/10 초마다 새 통화를 할 수 있습니까? HTTP 1.1을 사용하는 경우 TCP 연결이 열려 있어야합니다.

0

좋은 사용 사례인지 확실하지 않지만 SignalR이 도움이 될 수 있습니다.

+1

SignalR의 Damian Edwards와 이야기를 나누었습니다. SignalR은 서버 -> 클라이언트 영구 연결 만하는 것처럼 보입니다. – PhilChuang

+0

그래, 나는 그것이 정확하게 맞는지 확신 할 수 없었다. – mgnoonan

1

아마도 WebSocket이 유용 할 것입니다. HTTP를 통해 "소켓"을 만들 수 있으므로 HTTP를 통해 클라이언트에서 서버로 데이터를 보낼 수 있습니다.

관련 문제