2014-01-19 12 views
5

私はC#/ mono/signalRベースのWebページをRaspberry Piでホストしたいと思っています - これは可能ですか?ラズベリーパイの自己ホストSignalRは機能しますか?

私は、signalRハブがIIS 8を実行しているPCでホストされているクライアント - サーバー - クライアントソリューションを作成しました。piのコンソールアプリケーションは、c#signalRクライアントを使用してサーバーハブに接続します。 asp.netサーバーは、ブラウザークライアントがpiにコマンドを送信するための「リモートコントロール」ページもホストしていますが、今は要件としてPCを排除してpiでホストされているものをすべて持っていきたいと考えています。

答えて

14

TLDR

それは行うことができます! VideoCode

長い話

私は、Nancyでの作業溶液を得SignalRとRasperry PI(モノ3、ハードフロート)上のコンソールアプリケーションから実行しているOWINベースのWebサーバNoWinを管理していました。この溶液中のRPi.Nancyプロジェクトを参照してください:IIS SignalRのホストに接続されている純粋なクライアントであることと比較すると

https://github.com/neutmute/RPi.Demo

を、自己ホスト型Webサーバとしてpiは多少ラグです。 knockout.jsバウンド範囲スライダからの応答は、更新ストリームがクライアント上での移動を停止した後にサーバーにフィードスルーするのに数秒かかる非常に遅いです。同じ自己ホストサーバをPC上で走らせることは、遅れを示すが、Piほど遅くはない。

自己ホストされた信号Rを実行している間、スライダがドラッグされ、signalRイベントのストリームが送信されている間、モノプロセスは97%を消費します。これは、純粋なクライアントモードでIISをハブサーバーとして使用する場合には発生しませんが、スライダが激しくドラッグされるとIISサーバーで高いCPU使用率が発生するため、piを少し遅らせる必要があります。

私もウェブサーバーとしてKatanaを試しましたが、NoWinよりも遅く実行されました。

完全に自己ホストされたSignalRソリューションは、ここでいくつかのボタンプレスを送信していただけでうまくいくことに注意してください。スライダを前後にドラッグして連続したイベントストリームを生成した場合にのみ、 1つの解決策は、ノックアウトバインディングを介してスライダからの更新を抑制し、スライドイベントの解像度を低減することである。

また、signalRがIIS 8でホストされている場合に限り、piでホストされているSignalRはWebソケットを使用できないことに注意してください。サーバーサイドイベントトランスポートが代わりに使用されます。これは、純粋なクライアントモードのときと同じ転送です。

+0

+1技術チャレンジ – Cybermaxs

関連する問題