問題タブ [node.js-stream]

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.

0 投票する
3 に答える
18950 参照

node.js - Node.jsで1つの読み取り可能なストリームを2つの書き込み可能なストリームに一度にパイプする方法は?

目標は次のとおりです。

  1. ファイル読み取りストリームを作成します。
  2. gzipにパイプします(zlib.createGzip()
  3. 次に、zlib出力の読み取りストリームを次の場所にパイプします。

    1)HTTPresponseオブジェクト

    2)gzip圧縮された出力を保存するための書き込み可能なファイルストリーム

これで、3.1まで実行できます。

...これは正常に機能しますが、gzipで圧縮されたデータをファイルに保存する必要もあります。これにより、毎回再圧縮する必要がなくなり、gzipで圧縮されたデータを応答として直接ストリーミングできるようになります。

では、Nodeで1つの読み取り可能なストリームを2つの書き込み可能なストリームに一度にパイプするにはどうすればよいですか?

sourceFileStream.pipe(gzip).pipe(response).pipe(targetFileStream);Node 0.8.xで動作しますか?

0 投票する
2 に答える
11626 参照

javascript - Node.js ネット ライブラリ: 'data' イベントから完全なデータを取得する

私は周りを検索しましたが、私が答えようとしている正確な質問が見つからないか、私が5歳のように説明してくれる人が必要です.

基本的に、Net ライブラリを使用する Node.js スクリプトがあります。複数のホストに接続し、コマンドを送信し、戻りデータをリッスンしています。

データは最終的に 2 つのチャンクに分割されます。データをハッシュに格納し、/\r\nEND\r\n/ 区切り文字を読み取るときに最初の部分を残りの部分に追加しても、途中でチャンクが欠落しています。ストリームから完全なメッセージを確実に取得するために、データを適切にバッファするにはどうすればよいですか?

編集:わかりました、これはうまく機能しているようです:

私の最大の問題は明らかに論理エラーでした。返信を開始したチャンク、または返信を終了したチャンクのいずれかを待っていました。私はその間にすべてを保存していませんでした。

それについてすべての Node-ish を取得したい場合は、完全なメッセージ (空白行で始まり、行の 'END' で終わる) が到着するたびにイベントを発生させ、そこで処理を行う必要があると思います。

0 投票する
2 に答える
15200 参照

string - Node.js - ストリームを文字列に変換する方法

ストリームがあり、ストリームのコンテンツを文字列に変換する必要があります。http.get を使用してインターネットからストリーミングします。私もストリームをファイルに書き込みますが、ファイルを書きたくないので、同じファイルを開いてから読み取ります...したがって、ストリームを文字列に変換する必要がありますすべてのアドバイスをありがとう...

0 投票する
1 に答える
417 参照

node.js - node.js の ForEachLine()

スライドシェアslide no 35pptでの参照

このコードを実行すると

次のようにエラーが発生します

もちろん、いくつかのライブラリを含める必要があることは理解していますが、これをグーグルで検索しても何も見つかりませんでした。私はこれに完全な初心者なので、それを解決する方法がまったくわかりません。

どんな提案でもかなりの価値があります。

編集

提案された回答を使用すると、エラーが発生します

ありがとう

0 投票する
0 に答える
869 参照

node.js - Node.JS - サーバーからサーバーへのデータ転送のメモリ リークとネットワーク速度の低下

わかりました、これを説明するのは簡単ではありませんが、最善を尽くします..

ファイル共有ソリューションを提供しています (小さな画像から大きな 3D 図面/ビデオ (++5-10GB) まで) を奇妙なネットワーク設定 (IT セキュリティ要求) で実行しています。

NODE.js サーバーを含む内部ゾーン (LAN) があります。

  1. バックエンド (Windows Server 2008 2x2.60Ghz 16GB RAM および最大 122 MB/秒の読み取りのディスク転送速度)。0.8.22 (一部の MSNodeSQL のものは新しい Node バージョンを使用できない.. TDS に変換中

次に、プロキシと Web サーバーが存在する外部ゾーン ( DMZ ) を作成します。

  1. プロキシ (Ubuntu 12.10 1x2.60Ghz 32GB RAM レストは上記と同じ) ノード 0.8.22。Proxy は LAN にアクセスできる唯一のサーバーですが、開いているポートは 1 つだけであり、バックエンドによって初期化する必要があります。
  2. Web (Windows Server 2008 8x2.60Ghz 16GB RAM およびその他は上記と同じ) ノード 0.10.12

そのため、Web サーバーに接続されたクライアントにファイルを転送する必要があります。私が現在使用しているライブラリは BinaryJS ですが、転送速度が約 12MB/秒と非常に遅く、新しいクライアントが接続されると速度が低下します (通常は約 4 ~ 6MB/秒)。

リクエスト フロー: - クライアント (ブラウザ) -> https 経由の Web サーバー

  • Web サーバー -> BinaryJS 経由のプロキシ
  • プロキシ -> BinaryJS CreateStream 経由のバックエンド。
  • バックエンド -> Web サーバー ソケットにパイプされたストリーム オブジェクトを使用したプロキシ。
  • パイプ経由の Web サーバーへのプロキシ (元の要求)
  • Web-Server -> Client (Browser) binaryStream.pipe(res) res は ExpressJS の応答です。

テストの結果、通過する各サーバー (バックエンド、プロキシ、Web) の転送速度が 50% 低下しているように見えますが、その理由はわかりません. ギガビット接続クライアントの最大速度を得るのに十分な帯域幅とディスク速度があります。 . また、メモリとCPUはそれほどハードに機能していません。

コード: バックエンド (BASIC) - DB クエリのファイルパスなどは削除されます:

プロキシー:

ウェブサーバー:

私たちがやろうとしていることによりよく適合するように、独自のTCPサーバーとクライアントを作成しようとする必要があるかどうか疑問に思っていました..残念ながら、私はノードにまったく慣れておらず、EventEmitterをTCPに実装する方法を理解していません。識別のためにメタ付きのデータを送信できます。

より良い方法はありますか、それとも BinaryJS サーバーを完全に誤解していますか?

読んでくれてありがとう!

0 投票する
1 に答える
1425 参照

node.js - node.jsアプリをherokuにデプロイするには?? それは可能ですか?

問題は git add にありました。node_modules ファイルを追加するのを忘れていました。ターミナルを閉じて、Heroku と NodeJs の使用開始[1] に記載されている一連のコマンドを再度実行しました。アプリケーションは正常にスタックにプッシュされました。