4

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.

Ninjacu
  • 159
  • 1
  • 2
  • 8

5 Answers5

10

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
Faisal Ameer
  • 396
  • 4
  • 12
3

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

Kristian Barrett
  • 3,133
  • 2
  • 22
  • 36
1

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

Allahbakash.G
  • 1,549
  • 1
  • 12
  • 15
  • That all looks fine until you look at the actual code and realise it's running [`kill -9`, which is a bad idea](http://mywiki.wooledge.org/ProcessManagement#I.27m_trying_to_kill_-9_my_job_but_blah_blah_blah...). – l0b0 Apr 14 '15 at 12:36
1

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

Kit
  • 3,038
  • 1
  • 24
  • 23
0

It looks like your server set up is incorrect. Have a look at this example of how you can use socket.io with your http server together: Nodejs & socket io : warn - error raised: Error: listen EADDRINUSE

Community
  • 1
  • 1
Ruslan
  • 189
  • 3
  • 4