5

クライアント (デスクトップまたはモバイル) からホストされたサーバーにデータをストリーミングしたいと考えています。1/10 秒ごとに 1 バイトという大量のデータではありませんが、データをすぐにストリーミングする必要があり (バッファリングなし)、接続を長時間アクティブにしておく必要があります (たとえば、最大 10 分)。

サーバーはホストされているため、ソケットを使用することはできません。http だけです。

サーバー側では、クライアントに接続している場合、永続的な接続を使用して応答ストリームに書き込むだけでこれを行うことができます。

しかし、クライアントがサーバーへの永続的な接続を持ち、要求ストリームに書き込んでいる場合、これを逆に行う方法はありますか?

明確化: このクライアントからサーバーへの通信を永続的な http 接続として行う必要はありません。計画したサーバーからクライアントへの永続的な http 接続と対称性を保つために、それが可能かどうか疑問に思っていました。

私が聞いたところによると、個々の http 投稿を実行して、同じまたは同様の遅延を達成できるはずです。

4

4 に答える 4

1

私は先に進み、次のように思われる私自身の質問に対する答えを提供します。

クライアントからサーバーへの永続的な http 接続を行うことは技術的に可能ですが、個々の http 要求を作成する通常の方法を使用することは、すべての目的に対して十分に高速であるように思われるため、まだ誰も実装していません。

単純に WebRequest.Create と HttpWebRequest クラスを使用し、フレームワークが KeepAlive を処理していることを信頼するだけでした。実際のパフォーマンスはまだ確認されていませんが、私のプロトタイプでは十分に高速に見えます。

于 2012-04-25T13:53:56.070 に答える
1

おそらくWebSocketが役立つでしょう。HTTP経由で「ソケット」を作成できるため、HTTP経由でクライアントからサーバーにデータを送信するために使用できます。

于 2016-05-19T00:22:48.563 に答える
0

私の知る限り、WCFがIISでホストされている場合、ストリーミングは機能しません。

WCF 4.5 で修正されたというCodeProject の記事を見つけました。

クライアントに 1/10 秒ごとに新しい呼び出しを行わせることができますか? HTTP 1.1 を使用している場合は、TCP 接続を開いたままにしておく必要があります。

于 2012-04-24T15:26:00.110 に答える
0

これが適切なユース ケースかどうかはわかりませんが、SignalRが役立つ可能性があります。

于 2012-04-24T15:30:24.400 に答える