6

最近、私のWebページを介してクライアントのマシンのシリアルポートを介して接続されたデバイスに通信を追加する要求を受け取りました。

グーグルを行ったところ、node-serialportを使用したnode.jsがjavascriptの方法のようであることがわかりました。ただし、私の場合、デバイスは実際にはサーバーではなくクライアントのマシンに接続されています。

私の質問は、この意味でnode.jsをどのように実装するのですか?コードはクライアントブラウザで実行されるので、自分のWebページにnode.jsを「埋め込む」ことはできますか?

または、これを行うための他の代替手段はありますか?ただし、アプレットとActiveXは対象外です。

ありがとう

更新: クライアントにWebからアプレットをロードするように説得できたので、アプレットルートを使用します。素晴らしい情報をありがとうございました!=)

4

6 に答える 6

7

ブラウザのJavaScriptは、ブラウザが提供するAPIにのみアクセスできます。JavaScriptはブラウザのサンドボックスにあり、クライアントのファイルシステムやその他のハードウェアには(正しく)アクセスできません。

これは、他のあらゆる種類のファイルシステムAPIにアクセスできるサーバー実装であるnode.jsとは異なります。

ブラウザを「ブレイクアウト」するには、ある種のブラウザ拡張機能を使用する必要があります。

于 2012-07-27T04:30:11.440 に答える
3

サーバーに送信する前に、データをクライアントのWebブラウザーに取り込むために、プラグイン、アプレット、またはクライアント側のアプリケーションを作成する必要があります。

.jsファイルを作成するクライアントマシンのシリアルポートを読み取る小さなアプリを作成すると、Webページにクライアントのマシンで「動的に」作成されたjsファイルのsrcが含まれ、Webページにアクセスできるようになります。回り道のシリアルポート。

GPSGateの仕組みは次のとおりです。http://gpsgate.com/developer/gps_in_browser/

こちらもご覧ください:ウェブページのシリアルポートから読み取る方法

そして、Javaアプレットベースのソリューション: http ://code.google.com/p/java-simple-serial-connector/

http://code.google.com/p/java-simple-serial-connector/wiki/jSSC_Terminal

于 2012-07-27T04:30:15.553 に答える
1

ブラウザから node.js 関数にアクセスする場合は、app.jsを試してください。

于 2012-07-27T06:55:56.897 に答える
0

別のオプション (ActiveX またはセキュリティ権限を持つ Java アプレット以外) は、Google Native Client と Pepper API かもしれませんが、これでシリアル ポートにアクセスするのに十分かどうかはわかりません。

Firefox の拡張機能には、シリアル ポートにアクセスできるネイティブの XPCOM コンポーネントを含めることができます。また、セキュリティ トークンとスマートカード システムがシリアル リーダーをサポートしているため、ブラウザーの chrome (拡張機能) からシリアル ポートにアクセスする方法が既にあることに気付くかもしれません。Firefox 拡張機能を使用して、システムにネイティブ コンポーネントまたはアプリケーションを配置する必要がある次のソリューションを提供することもできます。

ここで対象となるブラウザと OS を教えてください。また、ActiveX と Java が除外された理由を教えてください。

他の人は、何らかのプロトコルを介してシリアルポートを公開するネイティブ実行プロキシを提案しています。これには node 、または python 、またはシリアル接続とソケットの両方を作成できる他の言語を使用できます。ブラウザ アプリケーションからプロキシにアクセスするには、特別なセキュリティ アクセス許可をページに付与する必要があります。その後、プロキシを HTTP または WebSocket サーバーにすることができます。また、スクリプト HTTP および WebSocket アクセスをプロキシであるオリジン サーバーに許可するプロキシから JavaScript を提供することもできます。Google Chrome 拡張機能は、ソケット クライアントを使用して任意の宛先とポートにアクセスできます。また、ネイティブ クライアントを Web ページで使用できるようにするのと同じように、特定のページまたはすべてのページでこれを許可するように Google Chrome で構成を設定できると思います。

あなたの目標についてもっと知らなければ、最善の解決策が何であるかを判断することはできません.

于 2012-07-27T05:08:14.247 に答える
0

これは、Active X または Java や Flash などのプラグインを介してのみ実行できます。JavaScript のコードは、ブラウザーから提供される API と同じくらい強力です。

HTTP リクエストをサーバーに送信したいですか? XMLHttpRequestブラウザーにはAPIがあるため、JavaScript はそれを行うことができます (同一生成元ポリシーに従います) 。オペレーティング システムで現在実行されているプロセスを照会しますか? 実行中のプロセスについて OS にクエリを実行するための API を提供するブラウザーがないため、JavaScript ではそれができません。

私の知る限り、シリアル ポート操作を実行するための JavaScript API を実装しているブラウザはありません。そのため、プラグインを使用せずに実行する方法はありません。

ただし、これは、そのような API がいつか存在する可能性を排除するものではありません。getUserMedia関数は、カメラまたはマイクからデータを取得できます。理論的には、他のデバイスからもデータを取得するように拡張できます。

于 2012-07-27T04:37:00.410 に答える