@katukix (達也 甲木)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

webシステムとローカルアプリの連携

解決したいこと

ハンディからwebシステムの印刷ボタンを押すと、
別のクライアントPCにつながっているラベルプリンタから印刷する。
(ラベルプリンタはUSB接続)

環境

・Azure web appを使う。
・DBはAzureのsqlserver。
・Blazorでwebシステム開発を行う。
・ラベルプリンタがあるため、webシステムから印刷データをローカルアプリ(C#)に送り印刷する。
 →webシステムとローカルアプリはwebsocketで接続。
 →ローカルアプリはクライアントPCにインストールする。

試したこと

①印刷データをクライアントPCのIP指定し、ローカルアプリに送ると
Mixed Contentエラーになる。

This request has been blocked; this endpoint must be available over WSS

→SSLの認証が必要だが、ローカルアプリなので認証なしでいきたい。

②印刷データをDBに格納し、DBのデータ変更をローカルアプリからsqlDependencyで取得する。
 →Azureのsqlserverが対応していない。
 →sqlNotificationRequestも対応していない。

③websocketの代わりに、TcpListenerで接続。
 →Blazorが対応していない。

今のところ

印刷データをDBに格納し、ローカルアプリからそのテーブルを5秒おきくらいにselect。自身の印刷データがあったら印刷する。
→数十台のクライアントが同時に印刷データのチェックを行うので、ネットワークが心配。
くらいしか方法が思い付きません。
いい方法がありましたら、ご教授ください。
必要であれば、ソースも載せますので。

0 likes

1Answer

印刷データをDBに格納し、ローカルアプリからそのテーブルを5秒おきくらいにselect。自身の印刷データがあったら印刷する。
→数十台のクライアントが同時に印刷データのチェックを行うので、ネットワークが心配。

数十台くらいだと大した事無さそうな気もしますが。印刷データって何を送ってるんでしょう?画像?それとも印刷制御用のテキストデータ?もし後者だとデータ量かなり少ないですよね。

印刷データのサイズが判りませんが、常に数十台の印刷データを同時に送る訳じゃないですよね?時間辺りの平均的な印刷データを送信される台数と、データサイズから通信量はおおよそ見積もれますよね。使用可能な通信量内に収まっていれば、問題ないのではないでしょうか。

今こういうやり方でやってて、それでデータ量多すぎるからどうしましょうって事だと、また話変わってきますけど。

1Like

Comments

  1. @katukix

    Questioner

    回答いただきありがとうございます。
    印刷データというのは、テキストデータです。
    大きくて10M程度です。
    気になっているのは、5秒おきくらいに全クライアントからselect文が発行され印刷データの有無を確認しているので、ネットワークに負荷がかかるのではないか?という点です。
    もっと別の方法がないか思案しているところです。
  2. @katukix

    Questioner

    ありがとうございます。
    なるほどSignalRが使えるのですね。試してみます。
    ちなみに、初心者で申し訳ないのですが、Azure web appのアプリ上からクライアントにインストールしたローカルアプリに通信するには、Azureの設定が必要なのでしょうか?
  3. @katukix

    Questioner

    遅くなりましたが、なんとかSignalRで実現できました。
    ありがとうございました。

Your answer might help someone💌