Nodejs & socket io Error: listen EADDRINUSE

13,839

Solution 1

If you cannot start the application at all you might have an application that is already using the given port. Another option is to try and use another port and see if you can start it.

Check @Faisal Ameers answer for linux commands to find program using port.

Check this post for finding the program using the port on windows: https://stackoverflow.com/a/48199/1958344

And this one for OS X: https://stackoverflow.com/a/30029855/1958344

Solution 2

It means the address you are trying to bind the server to is in use. Do this;

Command:
ps -eaf|grep node

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

This shows you the Process id where node is running, which in this case is "28029"

Now kill this process id using;

kill -9 28029

Solution 3

best way to kill server and restart with a kill.sh file

Solution 4

Perhaps it's because you're calling listen(port) twice. The second listen() may be throwing EADDRINUSE because the first listen() is using the port already.

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

Share:
13,839

Related videos on Youtube

Ninjacu
Author by

Ninjacu

Updated on September 15, 2022

Comments

  • Ninjacu
    Ninjacu over 1 year

    I am giving a try to do a chat with Node.js and socket.io

    Now here is my scenario I am using ubuntu 12.04 user and i have folder pp on desktop

    inside that i am putted server file server.js

    Here is the client:

    $(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);
        });
    });
    

    And here the server

    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("");
    

    Now in the same folder I have an html file like

    <!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>
    

    when i am trying to run the app.js useing node like

    node server.js
    

    I am getting the error

       warn  - error raised: Error: listen EADDRINUSE
    

    I try to restart all but it doesn't works

    Please tell me what might I am doing wrong.

  • l0b0
    l0b0 about 9 years
    That all looks fine until you look at the actual code and realise it's running kill -9, which is a bad idea.