Nodejs&socket io错误:听EADDRINUSE

Nin*_*acu 4 html javascript node.js socket.io

我正在尝试与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);
    });
});
Run Code Online (Sandbox Code Playgroud)

在这里服务器

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("");
Run Code Online (Sandbox Code Playgroud)

现在在同一文件夹中我有一个像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>
Run Code Online (Sandbox Code Playgroud)

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

node server.js
Run Code Online (Sandbox Code Playgroud)

我收到了错误

   warn  - error raised: Error: listen EADDRINUSE
Run Code Online (Sandbox Code Playgroud)

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

请告诉我,我做错了什么.

Fai*_*eer 10

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

Command:
ps -eaf|grep node

Output:
root     28029 27332  0 14:25 pts/2    00:00:03 node myVNC.js
Run Code Online (Sandbox Code Playgroud)

这将显示节点正在运行的进程ID,在本例中为"28029"

现在使用;杀死此进程id;

kill -9 28029
Run Code Online (Sandbox Code Playgroud)


Kri*_*ett 3

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

检查 @Faisal Ameers 的 linux 命令答案,以查找使用端口的程序。

检查这篇文章以查找使用 Windows 上的端口的程序:/sf/answers/3373961/

这是针对 OS X 的: https ://stackoverflow.com/a/30029855/1958344