【问题标题】:Nodejs & socket io Error: listen EADDRINUSENodejs & socket io 错误:监听 EADDRINUSE
【发布时间】:2014-01-17 10:56:46
【问题描述】:

我正在尝试与 Node.js 和 socket.io 聊天

现在这是我使用 ubuntu 12.04 用户的场景,我在桌面上有文件夹 pp

里面放了服务器文件server.js

这里是客户端:

$(document).ready(function() {
    var urlServer = location.origin + ':8081';
    var socket = io.connect(urlServer);
});

$(document).ready(function() {
    var urlServer = location.origin + ':8081';
    var socket = io.connect(urlServer);

    $("#boton").on('click', function() {
        var mensaje = $("#mensaje").val();
        socket.emit("mensaje", {msg: mensaje});
    });

    socket.on("mensaje", function(msg) {
        console.log("hemos recibido un mensaje", msg);
    });
});

这里是服务器

var server  = require('http').createServer(),
    sio      = require('socket.io'),
    port    = 8081;
server.listen(port);
var io = sio.listen(server, { log:true });
var channels = {};
io.sockets.on('connection', function (socket) {
    console.log("Cliente conectado");

    socket.on('mensaje', function (msg) {
        console.log(msg);
    socket.broadcast.emit('mensaje', msg);
    });

});
console.log('1- Escuchando en http://localhost:' + port , "");
console.log("");

现在在同一个文件夹中,我有一个类似的 html 文件

<!DOCTYPE html>
<html>
<head>
    <script src="../jquery.js"></script>
    <script src="../node_modules/socket.io/node_modules/socket.io-client/dist/socket.io"></script>
    <script src="clientechat.js.js"></script>
    <title>Chat con Node</title>
</head>
<body>

    <div id="mensajes"></div>
    <input type="text">
    <input type="submit" id="boton">

</body>
</html>

当我尝试使用节点运行 app.js 时

node server.js

我收到了错误

   warn  - error raised: Error: listen EADDRINUSE

我尝试重新启动所有但它不起作用

请告诉我我做错了什么。

【问题讨论】:

标签: javascript html node.js socket.io


【解决方案1】:

这意味着您尝试绑定服务器的地址正在使用中。这样做;

Command:
ps -eaf|grep node

Output:
root     28029 27332  0 14:25 pts/2    00:00:03 node myVNC.js

这会显示运行节点的进程 ID,在本例中为“28029”

现在用;杀死这个进程ID;

kill -9 28029

【讨论】:

    【解决方案2】:

    如果您根本无法启动应用程序,您可能有一个应用程序已经在使用给定端口。另一种选择是尝试使用另一个端口,看看是否可以启动它。

    查看@Faisal Ameers 对 linux 命令的回答,以使用端口查找程序。

    查看这篇文章以查找使用 Windows 上的端口的程序:https://stackoverflow.com/a/48199/1958344

    而这个适用于 OS X: https://stackoverflow.com/a/30029855/1958344

    【讨论】:

      【解决方案3】:

      杀死服务器并使用kill.sh 文件重新启动的最佳方法

      【讨论】:

      【解决方案4】:

      可能是因为您调用了两次listen(port)。第二个listen() 可能会抛出EADDRINUSE,因为第一个listen() 已经在使用该端口。

      server.listen(port); var io = sio.listen(server, { log:true });

      【讨论】:

        【解决方案5】:

        您的服务器设置似乎不正确。看一下如何将 socket.io 与 http 服务器一起使用的示例:Nodejs & socket io : warn - error raised: Error: listen EADDRINUSE

        【讨论】:

          猜你喜欢
          • 2013-01-16
          • 2016-07-12
          • 2018-12-24
          • 1970-01-01
          • 2014-12-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多