Rumah >hujung hadapan web >tutorial js >Mengapa Node.js Membuang 'Ralat: dengar EADDRINUSE' Apabila Menggunakan XMLHttpRequest?

Mengapa Node.js Membuang 'Ralat: dengar EADDRINUSE' Apabila Menggunakan XMLHttpRequest?

Barbara Streisand
Barbara Streisandasal
2024-11-27 19:51:10804semak imbas

Why Does Node.js Throw

Mengatasi Ralat: dengar EADDRINUSE dalam Node.js

Isu "Ralat: dengar EADDRINUSE" timbul apabila Node.js menghadapi percubaan untuk dengar di pelabuhan yang sudah diduduki. Node.js ialah persekitaran masa jalan untuk melaksanakan aplikasi JavaScript.

Dalam senario yang disediakan, pelayan sedang mendengar pada port 80 sambil pada masa yang sama cuba menggunakan XMLHttpRequest untuk permintaan. Penyemak imbas boleh mengendalikan sambungan serentak, tetapi pelayan Node.js menghadapi masalah kerana ketiadaan port.

Kod pelayan, seperti yang dinyatakan:

net.createServer(function (socket) {
    socket.name = socket.remoteAddress + ":" + socket.remotePort;
    console.log('connection request from: ' + socket.remoteAddress);
    socket.destroy();
}).listen(options.port);

Pelayan pada asasnya mendengar untuk masuk sambungan tetapi segera memusnahkannya. Ini menghalang sebarang permintaan sebenar daripada diproses.

Kod permintaan, seperti yang disediakan:

var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function() {
    sys.puts("State: " + this.readyState);

    if (this.readyState == 4) {
        sys.puts("Complete.\nBody length: " + this.responseText.length);
        sys.puts("Body:\n" + this.responseText);
    }
};

xhr.open("GET", "http://mywebsite.com");
xhr.send();

Permintaan cuba membuat permintaan HTTP GET ke tapak web jauh sementara Node.js pelayan berjalan pada port 80.

Untuk menyelesaikan "Ralat: dengar EADDRINUSE", pelayan harus sama ada:

  • Gunakan Port Berbeza: Pelayan boleh mendengar pada port lain, seperti 8080, membenarkan permintaan XMLHttpRequest diteruskan pada port 80.
  • Hentikan Pelayan: Jika pelayan perlu dijalankan pada port 80, ia harus dihentikan sebelum melaksanakan permintaan XMLHttpRequest. Kaedah biasa ialah menggunakan killall -9 nod untuk menamatkan proses Node.js.
  • Gunakan Pelayan Proksi: Pelayan proksi boleh digunakan untuk mengendalikan sambungan masuk dan memajukan permintaan kepada Nod pelayan .js. Ini membolehkan berbilang aplikasi menggunakan port yang sama.

Atas ialah kandungan terperinci Mengapa Node.js Membuang 'Ralat: dengar EADDRINUSE' Apabila Menggunakan XMLHttpRequest?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn