net :: ERR_CONNECTION_REFUSED Error jQuery ajax node.js

Este error ocurre cuando el cambio de fecha en la entrada de fecha ocurre muy rápidamente. Si cambio la fecha cada 2+ segundos, funciona bien. Pero da el siguiente error cuando la entrada de fecha se cambia muy rápido. En resumen, este error ocurre solo cuando la siguiente solicitud se realiza inmediatamente después de la primera. Pasé horas y busqué muchos problemas similares con este error ERR_CONNECTION_REFUSED en SO y google, pero no tuve suerte. ¿Alguna idea de lo que está causando este problema?

Además, cuando se carga la url ( http: // localhost: 8000 / svc / diary / 2016-01-03 ) en el navegador, los datos salen bien, pero si recargo (Ctrl + R) la url muy rápido, va para yahoo buscar con estos términos:

http localhost 8000 svc diary 2016 01 03 diary

El mensaje de error de la consola:

GET http://localhost:8000/svc/diary/2016-01-03 net::ERR_CONNECTION_REFUSED send @ jquery-2.2.0.js:9172 jQuery.extend.ajax @ jquery-2.2.0.js:8653 (anonymous function) @ idiary.js:18 jQuery.event.dispatch @ jquery-2.2.0.js:4732 elemData.handle @ jquery-2.2.0.js:4544 

El formulario de fecha

  

La llamada del Ajax

 $('#ddate').on('change', function() { var ajaxParams = { url: '/svc/diary/' + $(this).val(), type: 'GET', contentType: "application/json", dataType:"json" }; console.log(ajaxParams); $.ajax(ajaxParams) .done(function (data, textStatus, jqXHR) { console.log("diary retrieved!") console.log(data); $("#diary").text(data.diary); }) .fail(function (jqXHR, textStatus, errorThrown) { $("#diary").text(""); console.log("failed to retrieve diary!"); console.log(errorThrown); }); }); 

El controlador de GET nodo.js backend

 function getDiary(req, res) { var date = req.params.date; util.log(mysql.format(searchQuery, [date])); util.dbpool.query(searchQuery, [date], function (err, result) { res.setHeader("Content-Type", "application/json"); if (err) { console.log(err); util.errLog(JSON.stringify(err)); res.status(500).json({message: 'summary, no results.'}); } else { console.log(result); result.length > 0 ? res.status(200).json(result[0]) : res.status(200).json({"ddate":date, "diary":""}); } }); } 

ACTUALIZACIÓN: acaba de descubrir que este problema desaparece al iniciar el servidor de aplicaciones de nodo con

 node server.js 

Este problema ocurre solo cuando se inicia el servidor de aplicaciones de nodo con pm2 o foerver

 pm2 start --watch server.js forever start --watch server.js 

El problema está resuelto. Fue causado por el uso de la bandera de reloj en pm2 y para siempre. Mi aplicación imprime las declaraciones de registro y la carpeta de registro se encuentra en el mismo nivel que la carpeta de la aplicación, por lo que cada vez que se actualiza un archivo de registro, pm2 está reiniciando mi servidor de aplicaciones. Es por eso que funciona si pincho mi servidor de aplicaciones cada pocos segundos porque el reinicio del servidor solo toma alrededor de un segundo. Da error de conexión rechazada si pincho el servidor muy rápido, porque el servidor todavía se está reiniciando, por eso se ha rechazado la conexión.

Usted está buscando hacer una solicitud de dominio cruzado. Por defecto el servidor no permite esto. Debe habilitarlo en su servidor y realizar una solicitud JSONP. Usted puede leer sobre ello aquí:

http://www.leggetter.co.uk/2010/03/12/making-cross-domain-javascript-requests-using-xmlhttprequest-or-xdomainrequest.html

¿De qué se trata JSONP?