tou-rou2
@tou-rou2

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!

サーバサイドからクライエントサイドを更新する方法

至急お願いします。

現在、販売商品の注文管理システムを作成しています。
そのシステムの管理側の画面を常に最新の状態にするためにクライエントサイドで2秒に一回fetchを行っています。
Glitchで、開発を行っているため、一時間あたりのリクエスト数に制限があり、開発段階でもリクエスト過多でサーバが落ちてしまします。
そのため、クライエントサイドからfetchを行うのではなく、サーバサイドからクライエントサイドの情報を更新をしたいと思っています。
Node.jsを使って解決できる方法はないでしょうか。

どうぞよろしくお願いします。


補足
今週の土曜日、日曜日に僕の所属する高校の文化祭があり、そのためのシステム開発を行っています。

0

6Answer

サーバからクライアントにデータを送信する手段としては WebSocket APIServer-Sent Eventsロングポーリング といった手法があります。 Web プッシュ通知 API もデータ送信とは言えますが、レスポンスを送る手段としては不適です。

しかし、いずれにしても、 Glitch のリクエスト数制限を回避するために採用するのはあまり適切ではないと思います。いずれもサーバ・クライアント間の接続を長期間維持する必要がありますが、それを Glitch に遮断されたり、インスタンスを止められたりするリスクが考えられます。 RenderFly.io といった他の PaaS プラットフォームを検討してはいかがでしょうか。


至急と記述することが好ましくないというのは一般論でしょうか?

著名なプログラマであるエリック・レイモンドが書いた賢い質問のしかたというドキュメントに以下の記述があります。

たとえ急いでいても質問に「至急」と付けない
それはあなたの問題であり、私達の問題ではない。急ぐことを主張するのは逆効果になるだろう。大部分のハッカーはそのようなメッセージを失礼な、即座に特別な注意引くための自分勝手な策として単に削除する。さらに、「至急」という単語(そして注意を引くために件名で行うその他の似たような試み)は迷惑メールフィルタに引っかかりやすい ―― あなたが読んでほしかった人達はメールに気づきさえしないかもしれない。

質問サイトではなく質問メーリングリストについての話で、また一般論とまで言えるかは分かりませんが、ある種の無償で回答する気のあるプログラマの意見を代表したものではあると思います。

急いでいることを本当に持ち出したいのであれば、なぜ急いでいるのか、期限を延ばすのではだめな理由があるのかも添えると、受け入れてもらいやすくなるかもしれません。(理由が説明できなければ至急と書くべきではないでしょう。)

3Like

Comments

  1. @tou-rou2

    Questioner

    ご回答ありがとうございます。
    調べてみたところ、glitchでwebsocketを使用していた例があったので、このプラットフォームで使用することによる問題というのはそこまでないかと考えています。
    ただ、テストを行って、使えないほどに挙動がおかしいと思ったら、ご紹介していただいたプラットフォームも参考にして移植も考えたいと思います。


    「至急」に関する質問の回答までありがとうございます。
    今後の参考にさせていただきます。

「至急」とか書くのは止めた方がいいです。それはあなたの都合だけのことで閲覧者・回答者には関係ないこと。自分のことしか考えてない自分勝手な人と思われる可能性大です。

サーバサイドからクライエントサイドの情報を更新をしたいと思っています。

「Node.js websocket」などをキーワードにググって自分で調べてみるとかしましたか?

2Like

Comments

  1. @tou-rou2

    Questioner

    ご回答ありがとうございます。
    自分では調べてみたのですが、キーワードの選択の仕方が悪かったのか自分の思うような検索結果が得られませんでした。
    また、勉強不足で、websocketという単語は全く知りませんでした。
    参考にさせていただきます。

  2. @tou-rou2

    Questioner

    別件ですが、至急と記述することが好ましくないというのは一般論でしょうか?
    後学のために教えていただきたいです。

  3. 至急と記述することが好ましくないというのは一般論でしょうか?

    繰り返しますが、「至急」とか書くのは止めた方がいいです。それはあなたの都合だけのことで閲覧者・回答者には関係ないこと。自分のことしか考えてない自分勝手な人と思われる可能性大です・・・と言った通りです。

    実際自分はそう思ってます。今までの自分の経験では、そういう人は自分のことしか考えてない人が多かったですので。ひどいのになるとタイトルに【大至急】とか書く人がいます。まぁ、そういうのは中身を読まないでスルーしますから、むしろ自分にとっては被害は少ないかもしれませんが。

  4. 一般的にはその辺のナレッジコミュニティに業務メールを打つノリで来られても困るというところに終始するでしょう.至急の文言にアレルギーを持つべきでは無いとは思いますが.

    んなことより個人的には技術選定から行わないといけないような状態でなんでそんなに切羽詰まってるんだ…てところが気になります.ちゃんと設計できてますかね…

  5. @Verclene さん

    横レスであなたに言われる筋合いはありません。発言を慎んでください。

  6. その発言はまさしくコミュニティガイドラインにもある尊重というものを忘れた厄介自治厨というものだと思います.どうぞ購読の解除を推奨します.

  7. @Verclene さん

    突然出てきて横レスで他人に対してにアレルギーとか無礼なことを言う人が、「尊重を忘れた」とか言うのは何なのでしょうね? あなたはいちいち他人に意見しなければ気の済まない厄介自治厨というわけかな。

  8. @Vercleneさん

    他者のやり取りに議論に直接関係のない内容で介入するのは不愉快なのでやめてください。無礼であり失礼です。

    @tou-rou2さん

    ボランティアで質問集に親切に解答してくださっている方がいるのです。サポートデスクじゃないのです。至急答える義務は誰にもありません。答えてもらったらラッキーなわけです。この意見に不快なら他の有償メディアででも質問されればと思います。

    Qiitaの質が問われます。

  9. @tou-rou2

    Questioner

    @UsagiLabo さん
    義務がないことは重々承知の上です。
    ただし、こちらの考えとしてはできるだけ早く回答をいただきたいなと思っている、ということを伝えたかったのですが、だめでしたでしょうか。

一時間あたりのリクエスト数に制限があり

分析ミスです。一時間あたり に加えて 1秒あたりで指標を決めましょう。

でもリクエスト過多でサーバが落ちてしまします。

開発段階で良かったですね。

さて、

(一時間あたりの制限リクエスト数-手動回数) / (端末数*3600)

が1秒、1台のfetch回数です。

2秒の妥当性の検討をしましょう。

この値の3倍位の負荷でサーバが落ちるのは、サーバアプリケーションの不備とおもわれます。linuxのファイルディスクリプタの制限を超えたようなオチはないですよね?

websocketの導入の是非は別にしてプラットフォームや開発フレーム、Node.jsの見直ししてはどうでしょう?

Node.jsの経験不足でしょうか?入門書とおりの開発をお奨めします。

補足、リバースプロキシとして前段にnginxを設置する場合、websocketの採用は設定が大変ですよ。

2Like

Comments

  1. @tou-rou2

    Questioner

    ご回答ありがとうございます。

    お話の腰を折るようで申し訳ないのですが、分析ミスとは何でしょうか?
    一秒間あたりのリクエスト回数に制限はないのですが、平均して、ということでしょうか?

    また、ファイルディスクリプタの制限を超えたということはないと思われます。
    そこまで大量のファイルを読み込むことはしていません。

    Node.jsの経験不足に関してはまさに仰るとおりだと思いますが、あいにく入門書も手元になく買いに行く余裕もないため、手探りでの実装をしています。最悪、落ちずに動くものができればと思っています。

  2. @HalHarada さん、

    横から補足しますが、 https://glitch.com は web アプリケーション実行プラットフォームとして1時間あたりのリクエスト数に制限を設けています。これは運営者が任意に決めた数値でありハードウェア性能とは関係ありません。

  3. 分析ミスとは 

    極論ですが、3599秒は0セッション、1秒に7200セッションのケースでも2秒です。何方にしろ落ちてはダメと私は思いました。

    運営者が任意に決めた数値

    訂正します。仕方ないですね。
    2秒とすると7200セッションは少なすぎませんか?

    ファイルディスクリプタ

    は残念ながら物理的なファイルのみでなく、socketのopen数も含まれます。

Comments

  1. @tou-rou2

    Questioner

    ご回答ありがとうございます。調べてみようと思います。

質問に対して、既に技術的な回答が出ているので、

至急お願いします。

こちらの考えとしてはできるだけ早く回答をいただきたいなと思っている、ということを伝えたかったのですが、だめでしたでしょうか。

について、本質的な回答ではないのですが、
「モヤっ」としてると思うので、なぜこのような事態になってしまったかについて、
恐縮ですが、考えうる限り可能な範囲、且つ、いち個人の観点で回答いたします。

以下のガイドラインを参照すると
ざっくり
「お互いのために役立つような情報を提供する場を形成するように心がけましょう」と
いった内容が記述されているように思われます。

急いでいる気持ちを汲み取ることができるのですが、
「至急」と記載することによって「お互い」ではなく、
一方的に「現状をなんとかしたいから早く情報を提供してください」と
読み取れる可能性があることから「それはおかしくないでしょうか」といった
意見が寄せられたのではないでしょうか。

前述の通り、あくまで「いち個人」の観点なので
「正解」ではない為、参考程度に捉えていただければ幸いです。

1Like

そもそも我々はあくまでもボランティアですので、すぐに対応することはボランティアとしての範囲をこえているので無理です。

0Like

Your answer might help someone💌