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
Lepaskan: 2024-11-27 19:51:10
asal
838 orang telah melayarinya

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);
Salin selepas log masuk

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();
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan