問題タブ [mongrel2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - ブラウザからWebSocketのピン/ポンフレームを送信する
接続を維持するために、WebSocketのping / pongメッセージについて読み続けていますが、それらが何であるかはわかりません。独特のフレームタイプですか?(ピンポンに関連するchromeのjavascript WebSocketオブジェクトのメソッドは表示されません)。または、それは単なるデザインパターンですか(たとえば、文字通り「ping」またはその他の文字列をサーバーに送信して応答させます)。ピンポンは継続フレームに関連していますか?
私が尋ねる理由は、Mongrel2の背後で実行されるPythonフレームワークを使用しているため、Pythonアプリが必要とせずに接続を維持するように指示する特定のping/pongメッセージをMongrel2に送信する方法があるかどうか疑問に思っています。心配してください。別のHTTPメソッドを持っているのと似ていると思います。また、専用のping / pongメッセージフレームは、文字列「ping」よりも単純(サーバーとネットワークの負荷が少ない)であると思いますが、それほど重要ではないでしょう。
編集:RFC 6455を見たところ、PingとPongは間違いなく独自のオペコードを持つコントロールフレームタイプのようです。では、ChromeでJavaScriptからPingフレームを送信するにはどうすればよいですか?
node.js - ウェブアプリ技術の選択
現在、ember.js でユーザー インターフェイスを作成しており、転送テクノロジとサーバー サイド スクリプトに関するサーバー サイドの決定に助けが必要です。
アプリは、ユーザーのアクセス許可を処理し、入出力を保存するためのデータベース サガーを追加して、いくつかのサーバー サイド スクリプトの呼び出しを単純にラップするように計画されています。
アプリケーションを適切に操作するには、ユーザーがログインする必要があります。
作業中のユーザーの同時実行性が高いことを期待していますが、サーバーでより多くの並列スレッドを使用できるため、Node.js+socket.io を使用する必要があるかどうかは完全にはわかりません。
リクエストの半分はデータベースへの単純なリクエストであり、残りの半分は別のサーバー側スクリプトの計算時間 (最大 5 秒) をほとんど必要としません。
おそらく、MongrelDB をデータベースとして使用します。
私の最大の質問:
- 今日、純粋な websocket を使用しても技術的に安全ですか、それとも Socket.io を完全に劣化させた方がよいでしょうか?
- node.js はマルチコア ボックスで適切にスケーリングされますか、それとも Python バックエンドで Mongrel2 のようなものを使用する必要がありますか?
- 一部の応答が非常に長い場合、Python バックエンドは大きな同時実行性を処理しますか?
- node.js+socket.io でログイン ユーザーを処理するにはどうすればよいですか?
zeromq - Mongrel2 を起動するたびに新しいインスタンス UUID を生成するように設定できますか?
Mongrel2 マニュアルのルール 2 (セクション 5.3.2) に従って、Mongrel2 との間のすべてのメッセージには、最初にインスタンスの UUID が含まれます。また、ルール 3 (セクション 5.3.3) では、Mongrel2 からのメッセージの接続 ID である 1 つの数字が後に続くと述べています。Mongrel2 を起動するたびに、接続 ID は 0 から始まり、その後増加します。そのため、Mongrel2 の再起動後に、前のインスタンスからのリクエストへの応答が、現在の Mongrel2 のインスタンスからのまったく別のリクエストへの応答として受け入れられる可能性があることを懸念しています。したがって、私の質問は、Mongrel2 が開始されるたびに新しい UUID を動的に作成できるかどうかです。または、状態を保存する以外に適切な回避策がある場合、つまり、繰り返される UUID、接続 ID を確認します。
ありがとう
c - タスクファームパターンとmongrel2
サービスのWebリクエストを処理するためにmongrel2を使用することを考えています。バックエンドには、zeromqへのCバインディングを使用して、タスクファームパターンを使用したいと思います。
ただし、mongrel2のマニュアルを読んだ後、バックエンドハンドラーがmongrel2からメッセージをプルし、ZMQ_PUBソケットを使用してmongrel2にメッセージを送信するため、これを実装する方法が明確ではありません。
ハンドラーからバックエンドのタスクファームにメッセージを転送し、ハンドラーで応答を受信して、それをmongrel2に公開したいと思います。zeromqクライアントがいくつかの入力といくつかの出力にバインドすることは可能ですか?
FWIW、私はこれをANSICで実装しています。
c - 難読化された HTTP パーサー?
私は Go を学んでおり、Ragel と Go を使用して独自の HTTP 1.1 パーサーを実装するのは良い練習になると思いました。Mongrel2 のコード ベースを調べて、それがどのように行われているかを確認することをお勧めします。
Mongrel の HTTP パーサーのコードはここにありますが、実際の HTTP 処理を行っているように見える強調表示された関数http11_parser.cを理解するのが困難です。
私の質問は次のとおりです。
- 簡単に言えば、実装の背後にある基本的なアイデアは何ですか? コードは何をしますか?
- 慣用的な C のようなものがあると仮定すると、このコードはその良い例ですか? そうでない場合、これらすべての goto、ネストされた if およびスイッチの理由はありますか?
PS。Q2 に関しては、goto の使用について私が見つけた唯一の説明はhereです。C での私の経験は 0.5 (1 から 10 のスケールで) であることに注意してください。これは、このコードを理解するのが難しい理由を説明しています!
regex - Logstash Grok パターンと Python 正規表現?
Mongrel2 を含むさまざまなログ ソースを管理するために、logstash を構成しようとしています。Mongrel2 で使用される形式はtnetstring
で、ログ メッセージは次の形式になります。
上記のフォーマットから特定のフィールドを抽出するために、独自の grok パターンを作成したいと考えています。上記のメッセージhereで正規表現をテストすることから始めました。正規表現は
これは一致しlocalhost
ます。フォームで grok パターンと同じ正規表現を使用する場合
でlogstashを構成します
同じ正規表現が一致し86:9:localhost
ます。どこが間違っているのかわかりませんか?テストに使用した正規表現エンジンは Python に基づいていますが、grok フィルターの正規表現は Onigurama に基づいていますか?
現在、次の入力を使用してgrokdebugでテストしています
そして次のパターン
その結果
欲しいところ
zeromq - Mongrel2 send_spec と recv_spec
Mongrel2 をいじり始めたばかりです。Mongrel2 ハンドラ send_spec と recv_spec を localhost 以外のアドレス (ネットワーク上の 2 番目のマシンなど) に向けるまで、すべてのチュートリアルはうまくいきました。
これらのエラーが発生し始めました:
私の質問は、2 つのノード A と B があり、A が Mongrel2 サーバーで、B が A のハンドラーの 1 つの「ワーカー」である場合、A の .conf ファイルの send_spec と recv_spec にはどのアドレスが入るでしょうか?
これが素朴な質問でしたら申し訳ありませんが、私はとても混乱しています。