2017-10-20 14 views
0

私は自分の心を吹いている問題に直面しています。私はhtml5のWebアプリケーションに外部デバイスを接続する必要がありますが、私はそれを行う方法を知らない。残念なことに、このデバイスと通信する唯一の方法は、ベンダが提供するdllを使用することです(イーサネット自体を介してデバイスとイテラクトにすることができます)。私はそれを行う方法は、例えばASP Webサービスのクライアント側を実装することであることを知っていますが、別の "アプリケーション"を開発したくはありません。私のウェブページから直接それを行う方法はありますか?html5にdllを使用するページ

ありがとうございました。 よろしくお願いいたします。

EDIT: 私のWebアプリケーションのみ(理由はオフラインキャッシュ/ websqlデータベースの)クロム上で動作するよりも、jqueryのを使用して書かれた小売フロントエンドHTML5アプリです。ユーザーは、要求されると、接続された外部デバイス(クレジットカード決済システム)にデータを送信して回答を受け取る必要があります。通信する唯一の方法は、ベンダーのDLLを使用することです。

+0

WebアプリケーションではDLLファイルまたはハードウェアデバイスと直接インターフェイスします。クライアントマシンにアプリをインストールする必要があります。 – TidyDev

+0

あなたの「Webアプリケーション」は、Webサーバーから提供される典型的なブラウザで実行されるようにバインドされていますか?はいの場合、答えはあなたがいいえと言った場合とはまったく異なります。 – Harry

答えて

0

私はあなたの目標に到達するには、いくつかの異なる方法を想像することができます

ActiveXとNPAPIプラグインはここに記載されている - それらは非常に古くなっている、あなたは[古い回答]でも、そのリンク

を開く必要がいけませんCall DLL methods from Javascript

他の方法のいくつかのコレクション:

[Firefoxの関連] How to call user32.dll methods from javascript

[新しい回答] Call Function from DLL loaded in front-end javascript (load dll in clientside javascript)

[IEのみ - のActiveX] https://msdn.microsoft.com/de-de/library/7sw4ddf8(v=vs.94).aspx

そして最後にではなく、少なくとも私のお気に入りと最先端の方法:ローカルで実行しているシステムトレイのアプリやWindowsサービスを開発していますポートで待機し、クロスドメインコールを許可し、javascriptからajaxを使用して呼び出されたときにトリガーをトリガーします。

[編集]この最後のオプションは、クロスプラットフォームと互換性があり、可搬性もあります。説明のために、この "実行中のクライアント"上のWindowsサービスは127.0.0.1:1234を受信することができ、送信するすべての応答にAccess-Control-Allow-Origin:*を追加する必要があります。この方法では、127.0へのajax呼び出し.0.1:1234を呼び出します。パッケージ化し、ダウンロード可能なインストーラパッケージに配布します。あなたのjavascriptでは、パッケージがインストールされ、利用可能かどうかを確認するために、初期化時にテストAPI呼び出しを行います。そうでない場合は、ダウンロードリンクを提示します。 タスクトレイアプリケーションとして実行している場合は、さらに「私は既に持っています。ただ起動します」ボタンをクリックし、アプリケーションハンドラをレジストリに登録します(別のトピック)。

最後にやりたくない場合どのような種類のコンパイル済みアプリケーションでも、オプションの数が急激に減少し、JavaScriptだけを使用したい理由についてもっと説明する必要があります(他の言語は知らないなど)。

+0

あなたの貴重な答えをありがとうハリー!私が開発したWebアプリケーション(Chrome上でしか動作しない)が数百台のコンピュータにインストールされたFrontEndアプリケーションであり、別の開発ラインを維持するのが難しいため、他のコンパイル済みアプリケーションを持たないようにする理由があります。 システムトレイアプリケーションやWindowsサービスを開発するのは良い妥協点です(クライアントサイドのWebサービスはIISなどのために私を考慮していませんが、Windowsサービスはより柔軟で簡単です)。両方の人の間でコミュニケーションを取る? html5上のソケットはもはや使用されていないようです。 –

+0

ええ、私もWebSocketを使用しません。 Ajaxは仕事をうまくやってくれます。私が受け取っているタスクトレイアプリケーションで何をするかは、この例を使用して固定高位ポートで新しい接続を待ち受けることです。https://www.codeproject.com/Articles/17071/Sample-HTTP-Server-Skeleton-in-C。次に、Access Control-Allow-Originを追加しました。「*」は、それぞれのすべてのレスポンスに対して、「AJAXは私のサービスから送ったり受け取ったりできます。 – Harry

+0

ありがとう、ハリー、私は窓のサービスの中で一種のhttpサーバを実装するチャンスについて知らなかった。それは確かに私の仕事をするだろう!私のfrontEndアプリでは、サービスがインストールされているかどうかを簡単にチェックし、 "ダウンロードサービスインストーラ"を提供します。サンプルコードをお寄せいただきありがとうございます。 –

関連する問題