Saturday, May 25, 2024
 Popular · Latest · Hot · Upcoming
121
rated 0 times [  127] [ 6]  / answers: 1 / hits: 15592  / 9 Years ago, wed, february 25, 2015, 12:00:00

I started using [cloud9][1] and trying to host my nodejs app.
When I try to run my app it is throwing me following error:



Important: use process.env.PORT as the port and process.env.IP as the host in your



Important: use process.env.PORT as the port and process.env.IP as the host in your scripts!                                                                            

debugger listening on port 15454
8080
0.0.0.0

events.js:72
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE
at errnoException (net.js:905:11)
at Server._listen2 (net.js:1043:14)
at listen (net.js:1065:10)
at Server.listen (net.js:1147:9)
at exports.lookup.callback (dns.js:72:18)
at process._tickCallback (node.js:442:13)
at Module.runMain [as _onTimeout] (module.js:499:11)
at Timer.listOnTimeout [as ontimeout] (timers.js:112:15)


My app.js:



var app = require('express')();
//var app = express();
//var http = require('http');
var server = require('http').Server(app);
var io = require('socket.io')(server);
app.set('port', process.env.PORT || 3000);
var port = app.get('port');
console.log(port);
server.listen(port, process.env.IP);
// routing
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
// usernames which are currently connected to the chat
var usernames = {};
// rooms which are currently available in chat
var rooms = [];
io.sockets.on('connection', function (socket) {
socket.on('adduser', function (username, room) {
socket.username = username;
socket.room = room;
usernames[username] = username;
socket.join(room);
socket.emit('updatechat', 'SERVER', 'You are connected. Start chatting');
socket.broadcast.to(room).emit('updatechat', 'SERVER', username + ' has connected to this room');
});
socket.on('createroom', function () {
var new_room = (+Math.random()).substring(2,7);
rooms.push(new_room);
socket.emit('updatechat', 'SERVER', 'Your room is ready, invite someone using this ID:' + new_room);
socket.emit('roomcreated', new_room);
});
// when the client emits 'sendchat', this listens and executes
socket.on('sendchat', function (data) {
// we tell the client to execute 'updatechat' with 2 parameters
io.sockets. in (socket.room).emit('updatechat', socket.username, data);
});

// when the user disconnects.. perform this
socket.on('disconnect', function () {
// remove the username from global usernames list
delete usernames[socket.username];
// update list of users in chat, client-side
io.sockets.emit('updateusers', usernames);
// echo globally that this client has left
if(socket.username !== undefined){
socket.broadcast.emit('updatechat', 'SERVER', socket.username + ' has disconnected');
socket.leave(socket.room);
}
});
});


I tried looking for any process already running at 8080, this is the output



user@chat_room:~/workspace (master) $ ps ax | grep node
14154 pts/1 S+ 0:00 grep --color=auto node


If I try using other port then I am not getting socket file, it throws me 404 error:



<script src=/socket.io/socket.io.js></script>



This works fine in local.



EDIT
Open ports:



user@chat_room:~/workspace (master) $ netstat --listen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:mysql *:* LISTEN
tcp 0 0 localhost:17123 *:* LISTEN
tcp6 0 0 [::]:http-alt [::]:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 353035357 /tmp/tmux-1000/cloud91.8
unix 2 [ ACC ] STREAM LISTENING 351539622 /home/ubuntu/lib/mysql/socket/mysql.sock
unix 2 [ ACC ] STREAM LISTENING 352204732 /home/ubuntu/.c9/1312164/collab.sock


user@chat_room:~/workspace (master) $ netstat -vatn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:17123 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:37186 127.0.0.1:15455 TIME_WAIT
tcp 0 0 127.0.0.1:15454 127.0.0.1:59371 TIME_WAIT
tcp6 0 0 :::8080 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 400 172.17.0.248:22 10.240.179.70:43154 ESTABLISHED


user@chat_room:~/workspace (master) $ netstat -vat
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:mysql *:* LISTEN
tcp 0 0 localhost:17123 *:* LISTEN
tcp 0 0 localhost:37186 localhost:15455 TIME_WAIT
tcp 0 0 localhost:15454 localhost:59371 TIME_WAIT
tcp6 0 0 [::]:http-alt [::]:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 user-chat_:ssh 10.240.179.70:43154 ESTABLISHED


user@chat_room:~/workspace (master) $ lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 2316 ubuntu 10u IPv4 351539621 0t0 TCP *:mysql (LISTEN)
apache2 2374 ubuntu 4u IPv6 351539675 0t0 TCP *:http-alt (LISTEN)
apache2 2381 ubuntu 4u IPv6 351539675 0t0 TCP *:http-alt (LISTEN)
apache2 2382 ubuntu 4u IPv6 351539675 0t0 TCP *:http-alt (LISTEN)
apache2 2383 ubuntu 4u IPv6 351539675 0t0 TCP *:http-alt (LISTEN)
apache2 2384 ubuntu 4u IPv6 351539675 0t0 TCP *:http-alt (LISTEN)
apache2 2385 ubuntu 4u IPv6 351539675 0t0 TCP *:http-alt (LISTEN)
vfs-worke 13915 ubuntu 13u IPv4 352221394 0t0 TCP localhost:17123 (LISTEN)

More From » node.js

 Answers
29

I would say the error said it all:




Important: use process.env.PORT as the port and process.env.IP as the host in your scripts!




Your environment wants you to use process.env.PORT and process.env.IP for port and ip respectively (is that cloud9?), but on this line you're using another environmental variable:



app.set('port', process.env.app_port || 8080)


Fix:



app.set('port', process.env.PORT || 8080)


(In general, the EADDRINUSE error is for when another process is listening to that port)



For the 404 error



EDIT: the code posted before was for an old version of Express. See http://socket.io/docs/#using-with-express-3/4


[#67669] Tuesday, February 24, 2015, 9 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
elliem

Total Points: 415
Total Questions: 117
Total Answers: 94

Location: American Samoa
Member since Fri, Aug 26, 2022
2 Years ago
;