javascript - 同時実行性を処理するnodejsについての少しの疑問
巴扎黑
巴扎黑 2017-05-16 13:39:29
0
3
694

気まぐれに、特急でルートを定義しました:

リーリー

テストは次のとおりです。ブラウザのタブをN個開きます。
最初のタブを開いてlocalhost:3000/にアクセスします。
6秒以内に2番目のタブを開いてlocalhost:3000/にアクセスします。
最初のリクエストがres.sendにあることがわかります。 ( ) は、終了前の 2 回目のアクセスには応答しません。
console.log(++n); は、res.end への最初のアクセスが終わるまで 2 を出力しません
============= = =========マジックセパレータ===================================== ===
実験の修正、以下のコメントによると、上記の実験は同じブラウザの異なるタブで開かれました
が、異なるブラウザを使用しています。つまり、Google Chromeを使用してlocalhost:3000 /を開き、次に使用しますIE ブラウザで 6 秒以内に localhost:3000/ を開くと、前のリクエストは後続のリクエストをブロックしないため、次のような質問が表示されます。
最初の質問は、10,000 人のユーザーが 6 秒以内に同時にアクセスした場合、10,000 の接続を維持する必要がありますか? これは可能ですか?私は困惑している。
2 番目の質問、同じブラウザを開くとブロックされるのはなぜですか?

巴扎黑
巴扎黑

全員に返信(3)
Peter_Zhu

ノードのランタイムはシングルスレッドのイベントループを使用します。コード内の setTimeout() 函数是一个阻塞操作,Node 只有一个线程执行 setTimeout()。因此其他的操作都在 队列 で待機します。

こちらを参照してください: http://www.nodebeginner.org/i...

いいねを押す +0
phpcn_u1582

これはブラウザの問題です
正しい解決策は次のとおりです:
https://github.com/tianyk/not...

Pu Lingに従ってコードが変更されました:

リーリー

ここで、コールバックが別のリクエスターに分散できるように、res がコールバックで処理されることに注意してください。
私が書き始めたコードは、タイマーで処理され、コールバックがパラメーターとして渡されることに注意してください。よくわかりません

いいねを押す +0
世界只因有你

Nodejs は理解できませんが、Nodejs は高い同時実行性を処理できると聞いたことがあります。見てみましょう。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート