私のサービスは、既に Websockets を使用して HTML5 ブラウザ内クライアントと通信しています。クライアントは、通常の http 要求から同じサーバーによって処理されます。
今、私は同じサービス/アプリをブラウザの外で提供したいと思います.TCPソケットを介して提供したいと思います.
私が使用している RPC/アクション オブジェクトは同じになり、シリアル化も同じになり、ロジックも同じになります。WebSocket の代わりに TCP ソケットを使用したいだけです。
コードを同じ「プロジェクト フォルダー」の下にまとめて、playframework サーバーを展開するときに一度に開始し (基本的に、開始時に WebSocket、TCP ソケット、および http 要求のリッスンを開始したい)、すべてを展開時に同じパッケージ。
そんなこと知ってる:
- WebSocket は非ブラウザー アプリで使用できるため、必須ではありませんが、これは演習または好奇心の問題と考えてください。
- playframework は netty の上に構築されており、以前はいくつかの TCP サービスを実行するために netty を使用していました (ただし、大きなものは何もなく、製品の準備もできていません...したがって、専門家ではありません)。だから彼らは一緒に働くべきですよね?
私がやろうと思っていたこと:
- akka アクターに新しいソケット接続をリッスンさせます。
- 接続 (WS または TCP ソケット) を
ClientConnectionManager
インスタンスにラップする - 接続/rpc ロジックを処理するアクターに渡します。
私が検討したその他のリード: playframework Controller クラスの再実装。
または、これに対して既に実装されているソリューションはありますか?