私はいくつかの特定のハードウェアをサポートするウェブアプリケーションを稼働させています。これは、以下の手順で実現されます。ウェブアプリケーションのハードウェアサポート
- ユーザーは、クライアントマシン上のJavaファイル(と夫婦 他人を)置く小さなインストーラを実行します。主な部分は、 "hardwareManager"と呼ばれる瓶です。
- ユーザーの訪問webアプリケーション。 WebアプリケーションはJavaアプレットを実行します。これは、インストール時に .java.policyファイルが配置されているため、 がブラウザサンドボックス外のクライアントマシンと対話する権限を持ちます。
- アプレットは、hardwareManagerが実行中であることを確認するために、 をチェックし、起動しない場合は起動するようにコマンドを実行します。
- ユーザーは、 JavaScript経由でアプレットにコマンドを送信するWebアプリケーションとやりとりします。アプレットは、クライアントマシンのテキストファイル にコマンドを書き込みます。テキストファイルは、読み込まれたコマンドを実行する hardwareManagerによって常に監視されます。
これは機能しますが、はっきりしないようです。私はそれを改善する方法に関するいくつかのアイデアを持っていますが、もしあれば、試してみる価値があるかどうかわかりません。
hardwareManagerをsocketServerとしてセットアップし、テキストファイルを経由するのではなくアプレットを直接接続する方が良いでしょうか?それも可能ですか?
アプレットを完全に削除し、javascriptを直接hardwareManagerに渡す方法はありますか?たぶん、ローカルのhttpサーバーになるためにhardwareManagerを書くことによって?どのポートを実行する必要がありますか? javascriptのxssの制限はどこかでここに収まるのですか?
hardwareManagerがHTTPリクエストを受け入れるようにする場合、彼はJSによって直接アクセスできます。さらに、REST Webサービスとしてコマンドを実装するように設計することもできます。 XSS:ここでは問題ありません。もちろん、コマンドを受け入れるためにhardwareManagerを実行させ、どのポートで知っているかを知る必要があります。 – Viruzzo
@Viruzzuの答えに加えて、[Jetty](http://docs.codehaus.org/display/JETTY/Embedding+Jetty)を使うと、httpサーバをJavaアプリケーションの中に簡単に埋め込むことができます。その後、単にjavascriptコードをlocalhostに渡して、hardwareManager –
Viruzzoとやりとりするために、答えを出して投票してください。 – pkh