検索

ホームページ  >  に質問  >  本文

javascript - 同時実行性を処理するnodejsについての少しの疑問

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

リーリー

テストは次のとおりです。ブラウザのタブを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 番目の質問、同じブラウザを開くとブロックされるのはなぜですか?

巴扎黑巴扎黑2823日前720

全員に返信(3)返信します

  • 天蓬老师

    天蓬老师2017-05-16 13:41:29

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

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

    返事
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 13:41:29

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

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

    リーリー

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

    返事
    0
  • 世界只因有你

    世界只因有你2017-05-16 13:41:29

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

    返事
    0
  • キャンセル返事