Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js websocket错误“;错误:侦听EADDRNOTAVAIL错误:侦听EADDRNOTAVAIL";_Javascript_Node.js_Websocket_Ubuntu Server_Total.js - Fatal编程技术网

Javascript Node.js websocket错误“;错误:侦听EADDRNOTAVAIL错误:侦听EADDRNOTAVAIL";

Javascript Node.js websocket错误“;错误:侦听EADDRNOTAVAIL错误:侦听EADDRNOTAVAIL";,javascript,node.js,websocket,ubuntu-server,total.js,Javascript,Node.js,Websocket,Ubuntu Server,Total.js,应用程序在本地主机上工作正常。但当它连接到服务器时,会出现错误。 我通过端口22连接服务器 这就是错误所在 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

应用程序在本地主机上工作正常。但当它连接到服务器时,会出现错误。
我通过端口22连接服务器

这就是错误所在

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
任何帮助

-更新-

我运行netstat-tulpn | grep22

结果:

 tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      683/sshd
 tcp6       0      0 :::22                   :::*                    LISTEN      683/sshd
但是我运行的是
netstat-tulpn | grep80

没有显示任何内容

有什么帮助吗?这是服务器故障吗

正在运行
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
正在运行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

端口22是为ssh保留的,在已知端口列表中,请检查


我建议您在端口8000-9000上运行节点应用程序进行开发,但您可以使用注册端口范围内的任何端口。

我认为您使用的是基于Unix的操作系统,如果是这种情况,则在没有sudo访问的情况下,您不能使用1024以下的任何端口

此外,在挖掘太深之前,请检查侦听端口是否未被任何其他进程使用

快速修复(仅用于开发):

  • sudo节点文件.js
  • server.listen(3000);//任何大于1024的数字
用于生产(切勿在具有根访问权限的生产上运行节点)。

您必须使用ip表将侦听端口(例如3000)映射到80

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000

您正在使用已使用的端口。您必须更改端口,或者必须终止正在侦听端口的进程。打开终端并写入(示例):
lsof-i:22
lsof-i:80
lsof-i:8000
kill PID


如何更改total.js中的侦听端口

  • 在/app/config或/app/config发布或/app/config调试中:
  • 默认ip:127.0.0.1
    默认端口:8000
    

    //例如Heroku
    默认ip:自动
    默认端口:自动
    
  • 如果存在文件:release.js或debug.js:
  • 如果只存在index.js

  • 谢谢和文档:

    今天刚看到这个。用户在其
    /etc/hosts
    文件中注释掉了
    127.0.0.1 localhost
    ,另一个网络服务正在将
    localhost
    解析为与用户机器无关的其他IP地址

    解决方案是将此行添加到
    /etc/hosts

    127.0.0.1 localhost
    

    如果只是在多次请求后才出现此错误,则可能需要检查端口范围设置并进行调整。还有TCP超时设置,例如FIN_WAIT,它可以使连接保持比预期更长的打开时间

    sysctl-a | grep net
    应显示所有网络连接设置

    sysctl-a | grep端口
    用于端口范围设置

    sysctl-a | grep keep
    用于tcp等待设置

    和(mac)了解有关设置的更多详细信息/建议

    如果要修改设置,我建议您首先将
    /etc/sysctl.conf
    复制到类似
    /etc/sysctl.conf.bak
    的文件中,然后修改该文件中的设置。它们可以通过命令行进行调整,但这是临时的,重置它们可能会造成混乱

    你可能不想在生产中这样做

    其他文件:


    如何更改端口?putty不允许我将端口80连接到端口22上的putty,因为它是ssh端口,但您的节点应用程序应该使用其他端口。是的。我的节点应用程序使用端口80。但是它不断地得到这个错误“netstat-tulpn | grep:80”的输出是什么将这个输入到ssh控制台请在您的问题中提供一些源代码,如果没有它,我无法进一步帮助您。您到底想做什么?@ravi-我尝试将应用程序连接到服务器。应用程序在本地主机上运行良好。但连接服务器时,它会出现这些错误<代码>https://github.com/totaljs/examples/tree/master/angularjs-websocket这就是项目。如果您只向我们显示您的服务器文件代码,会更容易。如果您使用的是
    https://github.com/totaljs/examples/tree/master/angularjs-websocket
    不进行任何修改,直接使用默认端口8000。尝试连接到服务器的公共IP,例如,
    http://:8000
    。对于端口使用测试,
    lsof-i:8000
    谢谢你的回答。但是我只使用windows操作系统。我的服务器只有ubuntu。windows的任何帮助:)我在服务器上运行了您的ip tableing命令,但没有发生任何事情。。我的服务器有问题吗?@mahmoud mahfouz-然后您可以提供解决方案。pleaseEADDRNOTAVAIL(地址不可用)是Linux错误。这意味着TCP连接无法完成。当端口正在使用或不可访问时(例如:端口<1024)会发生这种情况。要检查端口是否正在使用,请使用
    netstat-pn | grep:port_NUMBER
    ,要使用<1024的端口,请使用sudo或port forward,使用iptables@Sameera我想你是在问如何将文件上传到服务器。如果是这样的话:您可以使用FTP(),或者您可以将代码添加到git并在服务器上拉取它。
    // for development:
    require('total.js').http('debug', { port: 8000 });
    
    // or for production:
    require('total.js').http('release', { port: 8000 });
    
    127.0.0.1 localhost