javascript - Node.js websocket error "Error: escucha EADDRNOTAVAIL Error: escucha EADDRNOTAVAIL"
ubuntu-server total.js (4)
La aplicación funciona bien en localhost. Pero cuando se conecta al servidor obtiene un error.
Conecto el servidor a través del puerto 22
Este es el error
Error: listen EADDRNOTAVAIL Error: listen EADDRNOTAVAIL
at errnoException (net.js:904:11)
at Server._listen2 (net.js:1023:19)
at listen (net.js:1064:10)
at net.js:1146:9
at dns.js:72:18
at process._tickCallback (node.js:419:13)
at Function.Module.runMain (module.js:499:11)
at startup (node.js:119:16)
at node.js:906:3
Alguna ayuda !!!
-actualizar-
ejecuto netstat -tulpn | grep 22
netstat -tulpn | grep 22
Resultado:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 683/sshd
tcp6 0 0 :::22 :::* LISTEN 683/sshd
pero ejecuto netstat -tulpn | grep 80
netstat -tulpn | grep 80
Nada de pantalla.
Cualquier Ayuda. ¿Es culpa de este servidor?
ejecutando netstat -nlt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:5901 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:5902 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6001 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6002 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
Ejecutando netstat -anp | grep :80
netstat -anp | grep :80
tcp 1 0 162.243.145.226:60728 91.189.94.25:80 CLOSE_WAIT 1726/ubuntu-geoip-p
tcp 1 0 162.243.145.226:47842 74.125.239.148:80 CLOSE_WAIT 8104/epiphany-brows
tcp 1 0 162.243.145.226:60727 91.189.94.25:80 CLOSE_WAIT 1417/ubuntu-geoip-p
tcp 1 0 162.243.145.226:58818 198.41.30.199:80 CLOSE_WAIT 8104/epiphany-brows
Creo que está utilizando un sistema operativo basado en Unix, si ese es el caso, entonces no puede usar ningún puerto por debajo de 1024 sin acceso sudo.
Además, antes de excavar demasiado, compruebe que el puerto de escucha no esté siendo utilizado por ningún otro proceso.
Una solución rápida (solo para desarrollo):
-
sudo node file.js
o -
server.listen(3000); // any number > 1024
Para producción (nunca ejecute el nodo en producción con acceso raíz).
debe mapear el puerto de escucha (por ejemplo: 3000) a 80 usando tablas ip
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
El puerto 22 está reservado para ssh y en la lista de puertos conocidos, consulte http://en.wikipedia.org/wiki/Port_(computer_networking)#Common_port_numbers
Le recomendaría que ejecute aplicaciones de nodo para el desarrollo en los puertos 8000-9000, pero puede usar cualquiera del rango de puertos registrados.
Estás usando un puerto usado. Debe cambiar un puerto o debe matar un proceso que esté escuchando en un puerto. Abra el terminal y escriba (ejemplo): lsof -i :22
o lsof -i :80
o lsof -i :8000
y kill PID
del proceso.
¿Cómo cambiar el puerto de escucha en total.js?
- en / app / config o / app / config-release o / app / config-debug :
default-ip : 127.0.0.1
default-port : 8000
o
// For e.g. Heroku
default-ip : auto
default-port : auto
- si existen archivos: release.js o debug.js :
var fs = require("fs");
var options = {};
// options.ip = "127.0.0.1";
// options.port = parseInt(process.argv[2]);
options.port = 8000;
- si existe solo index.js
// for development:
require(''total.js'').http(''debug'', { port: 8000 });
// or for production:
require(''total.js'').http(''release'', { port: 8000 });
Gracias y documentación: http://docs.totaljs.com
Acabo de ver esto hoy. El usuario había comentado 127.0.0.1 localhost
en su /etc/hosts
, y otro servicio de red estaba resolviendo localhost
en una dirección IP diferente no asociada con la máquina del usuario.
La solución fue agregar esta línea a /etc/hosts
127.0.0.1 localhost