問題タブ [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.
node.js - Node.jsで1つの読み取り可能なストリームを2つの書き込み可能なストリームに一度にパイプする方法は?
目標は次のとおりです。
- ファイル読み取りストリームを作成します。
- gzipにパイプします(
zlib.createGzip()
) 次に、zlib出力の読み取りストリームを次の場所にパイプします。
1)HTTP
response
オブジェクト2)gzip圧縮された出力を保存するための書き込み可能なファイルストリーム。
これで、3.1まで実行できます。
...これは正常に機能しますが、gzipで圧縮されたデータをファイルに保存する必要もあります。これにより、毎回再圧縮する必要がなくなり、gzipで圧縮されたデータを応答として直接ストリーミングできるようになります。
では、Nodeで1つの読み取り可能なストリームを2つの書き込み可能なストリームに一度にパイプするにはどうすればよいですか?
sourceFileStream.pipe(gzip).pipe(response).pipe(targetFileStream);
Node 0.8.xで動作しますか?
javascript - Node.js ネット ライブラリ: 'data' イベントから完全なデータを取得する
私は周りを検索しましたが、私が答えようとしている正確な質問が見つからないか、私が5歳のように説明してくれる人が必要です.
基本的に、Net ライブラリを使用する Node.js スクリプトがあります。複数のホストに接続し、コマンドを送信し、戻りデータをリッスンしています。
データは最終的に 2 つのチャンクに分割されます。データをハッシュに格納し、/\r\nEND\r\n/ 区切り文字を読み取るときに最初の部分を残りの部分に追加しても、途中でチャンクが欠落しています。ストリームから完全なメッセージを確実に取得するために、データを適切にバッファするにはどうすればよいですか?
編集:わかりました、これはうまく機能しているようです:
私の最大の問題は明らかに論理エラーでした。返信を開始したチャンク、または返信を終了したチャンクのいずれかを待っていました。私はその間にすべてを保存していませんでした。
それについてすべての Node-ish を取得したい場合は、完全なメッセージ (空白行で始まり、行の 'END' で終わる) が到着するたびにイベントを発生させ、そこで処理を行う必要があると思います。
string - Node.js - ストリームを文字列に変換する方法
ストリームがあり、ストリームのコンテンツを文字列に変換する必要があります。http.get を使用してインターネットからストリーミングします。私もストリームをファイルに書き込みますが、ファイルを書きたくないので、同じファイルを開いてから読み取ります...したがって、ストリームを文字列に変換する必要がありますすべてのアドバイスをありがとう...
node.js - node.js の ForEachLine()
スライドシェアslide no 35
のpptでの参照
このコードを実行すると
次のようにエラーが発生します
もちろん、いくつかのライブラリを含める必要があることは理解していますが、これをグーグルで検索しても何も見つかりませんでした。私はこれに完全な初心者なので、それを解決する方法がまったくわかりません。
どんな提案でもかなりの価値があります。
編集
提案された回答を使用すると、エラーが発生します
ありがとう
node.js - Node.JS - サーバーからサーバーへのデータ転送のメモリ リークとネットワーク速度の低下
わかりました、これを説明するのは簡単ではありませんが、最善を尽くします..
ファイル共有ソリューションを提供しています (小さな画像から大きな 3D 図面/ビデオ (++5-10GB) まで) を奇妙なネットワーク設定 (IT セキュリティ要求) で実行しています。
NODE.js サーバーを含む内部ゾーン (LAN) があります。
- バックエンド (Windows Server 2008 2x2.60Ghz 16GB RAM および最大 122 MB/秒の読み取りのディスク転送速度)。0.8.22 (一部の MSNodeSQL のものは新しい Node バージョンを使用できない.. TDS に変換中
次に、プロキシと Web サーバーが存在する外部ゾーン ( DMZ ) を作成します。
- プロキシ (Ubuntu 12.10 1x2.60Ghz 32GB RAM レストは上記と同じ) ノード 0.8.22。Proxy は LAN にアクセスできる唯一のサーバーですが、開いているポートは 1 つだけであり、バックエンドによって初期化する必要があります。
- 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 サーバーを完全に誤解していますか?
読んでくれてありがとう!
node.js - node.jsアプリをherokuにデプロイするには?? それは可能ですか?
問題は git add にありました。node_modules ファイルを追加するのを忘れていました。ターミナルを閉じて、Heroku と NodeJs の使用開始[1] に記載されている一連のコマンドを再度実行しました。アプリケーションは正常にスタックにプッシュされました。