モバイル用の Web ベースのチャット メッセンジャーを作成する必要があります。そのために、サーバーとクライアント間の通信を開いて、サーバーがクライアントの要求なしでメッセージをプッシュできるようにします。これには SignalR と Websockets が適していることがわかりました。しかし、どちらを使用するかはわかりません。
2 に答える
答えは、それが本当に依存しているということです。それはあなたのスケールに依存します.SignalRのスケールが悪いと言っているのではありません. モバイルでの SignalR クライアント ライブラリのサポートについてです。
私たちはしばらくの間 signalr を使用してきましたが、多くの問題に直面し、生の websocket に戻ってきました。
私の経験によると:
1-SignalR は、xamarin クライアントで Websocket をサポートしていません。(System.Net.WebSockets の型を使用し、この名前空間はどの PCL プロファイルでも使用できないため)、すぐに追加する予定はありません (github で連絡しました)。そして、あなたが好きな他のソリューションがないかもしれません(長いポーリングまたは永遠のフレームと... WebSocketの5倍のメモリを消費します)。
2- Dozeモード、画面ロックなどを扱うときにモバイルデバイスで大きな問題を引き起こす実際のトランスポートに対する哀れな制御を提供します... . (これらの状況には回避策がありますが、基本的に非常に汚れています)。
結論として、モノラルで実装されている生の System.Net.WebSockets を使用する時間があれば、モバイル用だと思います (James james montemagno の発言によると) と main .net. それ以外の場合は、廃止された Microsoft.WebSockets nuget パッケージを使用できます。
内部では、SignalR は、クライアントとブラウザーでサポートされている内容に基づいて、Web ソケット、ロング ポーリング、サーバー送信イベント、または Forever フレームを使用して、アプリケーションでリアルタイム機能を有効にします。互換性の問題を回避し、リアルタイム アプリケーションの開発に使用できる追加機能を取得するために、これを使用することを検討する必要があります。詳細については、次のドキュメントを参照してください。