前回の記事の続編です。ffi-napiサーバー側を改良いたしました。
改良点
(1)HTTP-GETメソッドを実装して、簡易Webサーバー化した。
(2)1カ月・2カ月とかの長期運転になると、NodeJS v16 で組んだ ffi-napiサーバーはクラッシュする可能性があるので、死活監視コマンドを設けて、クラッシュリカバリするようにした。
(3)クラッシュリカバリした際、クライアントのElectron側がDLL関数呼出APIのNGステータスコードから、それを判断出来るようにした。これで、クライアントのElectron側が、周辺装置の再初期化シーケンスを実行出来るようになる。
想定する利用シーン
シーン1
シーン2
クライアントをChrome等の通常のブラウザとする想定です。
localhost

ffi-napiサーバーのフォルダー構成
通常のWebサーバーと異なる点は、Webドキュメントの配置を htdocsフォルダ配下としただけではなく、404 Not Foundとなったときに、htdocs.zipファイルを探索するようにした事です。
その号機固有のHTMLなどを htdocsフォルダに配置しておき、いくつかある号機で共通したWebドキュメントは htdocs.zipを参照するようにしました。リソースの配布の手間が少しでも減るかもしれません。

github
ソースコードはこちらです。
$ git clone https://github.com/yoike123/ffi_honji.git
今後の展開
次の3案を考えております。
(1)クライアントのElectron側のデモを充実。
(2)ffi-napiサーバーにsqlite3関連のAPIを実装する。
(3)ffi-napiサーバーをC言語で記述する(バイナリ提供)
その他、リクエストがございましたら、コメント頂けると、励みになります。
レガシー32bit DLLの資産を生かしつつ、64bit化の波に乗れればと思っております。
ご参考
POS端末をChromeで動かすことについては、JSONプロトコルが違うことと、ffiサーバーをCで記述した構成で、2025年12月に納品して稼働している実績があります。企業秘密のため、ソースコードは開示できませんが、次のようなシステム構成でした。
レジャー施設向けの券売機
POS端末を一般のブラウザーで書くことに興味をお持ちの方はお問い合わせ下さい。技術提携いたします。

