Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I'm not the most knowledgeable guy ever with networking, but here goes...

I've created an application with NodeJS and I'd like to test the application on my LAN with my family. The application listens on port 1337 for connections and I can access the application fine through my own PC by typing localhost:1337, 192.168.0.3:1337 or even http://joel-pc:1337/ into my browser's address bar.

I will be also be running apache alongside NodeJS, and I can access this fine by typing 192.168.0.3 or http://joel-pc/ into a browser's address bar as long as it's connected to the same network.

Now here's the weird part; If I stop the apache service, change my node application to listen on port 80 (http) insted of 1337, it will be accessible on my pc by typing localhost, 192.168.0.3 or even http://joel-pc into my browser's address bar. However, I still can't access NodeJS on any other PC on my network apart from my own.

I've tried creating an outbound rule within Windows 7 to allow access to port 1337, but I still can't get access to my NodeJS server on any other PC than my own, even if it's listening on port 80. Is there something obvious I'm missing out on here?

share|improve this question

migrated from stackoverflow.com Apr 14 '13 at 10:29

This question came from our site for professional and enthusiast programmers.

1  
What if, as a test only, you turn off your firewall? –  cheesemacfly Apr 11 '13 at 18:17
    
If I turn off my firewall I can access node perfectly, thank you :) But surely there must be a safer way of doing things? –  Joel Murphy Apr 11 '13 at 18:26
1  
Cheers. I flagged it too because I read in another thread that it needs to be flagged by 3 users before any action is taken by a moderator –  Joel Murphy Apr 11 '13 at 19:01
1  
The flag I raised has been deemed helpful, so not sure how long it can take! –  cheesemacfly Apr 12 '13 at 14:26
1  
Yay it's been migrated now. Thanks again! –  Joel Murphy Apr 14 '13 at 13:41
show 4 more comments

2 Answers

Most likely your node application is binding to the loopback IP address 127.0.0.1 instead of the "all IPs" 0.0.0.0 since this is the default behavior of listen. Specify both port and IP in your call like server.listen(80, '0.0.0.0'); and try again.

share|improve this answer
    
If I do this, I still can't access Node on any other device on my LAN. My code looks something like this:var io = require('socket.io'); var express = require("express"); var app = express(); var server = require('http').createServer(app) io = io.listen('80', '0.0.0.0'); –  Joel Murphy Apr 11 '13 at 18:27
    
This worked in my case. On some wireless networks localhost works as a string, but in others you have to type it as 127.0.0.1 –  Raul Rene Jun 30 at 12:17
add comment

Get you current local network IP and, run http server like this:

server.listen(80, 'current_local_ip');
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.