लैन पर NodeJS सर्वर का उपयोग कैसे करें?


16

मैं नेटवर्किंग के साथ सबसे अधिक जानकार आदमी नहीं हूँ, लेकिन यहाँ जाता है ...

मैंने NodeJS के साथ एक एप्लिकेशन बनाया है और मैं अपने परिवार के साथ अपने LAN पर एप्लिकेशन का परीक्षण करना चाहूंगा। आवेदन बंदरगाह पर सुनता 1337कनेक्शन के लिए और मैं टाइपिंग द्वारा अपने खुद के पीसी के माध्यम से आवेदन ठीक उपयोग कर सकते हैं localhost:1337, 192.168.0.3:1337या यहां तक कि http://joel-pc:1337/अपने ब्राउज़र के एड्रेस बार में।

मैं NodeJS के साथ अपाचे भी चला रहा हूं, और जब तक यह एक ही नेटवर्क से जुड़ा हुआ है तब तक मैं इस जुर्माना को टाइप 192.168.0.3या http://joel-pc/ब्राउज़र के एड्रेस बार में एक्सेस कर सकता हूं ।

अब यहाँ अजीब हिस्सा है; यदि मैं अपाचे सेवा बंद कर देता हूं, तो मेरे नोड एप्लिकेशन को पोर्ट 80(http) पर सुनने के लिए बदल दें 1337, यह मेरे पीसी पर टाइप करके localhost, 192.168.0.3या यहां तक ​​कि http://joel-pcमेरे ब्राउज़र के एड्रेस बार में भी पहुंच जाएगा । हालाँकि, मैं अभी भी अपने नेटवर्क पर अपने स्वयं के अलावा किसी अन्य पीसी पर NodeJS का उपयोग नहीं कर सकता।

मैंने विंडोज 7 के भीतर एक आउटबाउंड नियम बनाने की कोशिश की है जो 1337 पोर्ट तक पहुंच की अनुमति देता है, लेकिन मैं अभी भी अपने स्वयं के अलावा किसी अन्य पीसी पर अपने नोडोड्स सर्वर तक पहुंच प्राप्त नहीं कर सकता हूं, भले ही यह पोर्ट 80 पर सुन रहा हो। क्या कुछ स्पष्ट है मुझे यहाँ याद आ रही है?


2
क्या होगा अगर, केवल एक परीक्षण के रूप में, आप अपना फ़ायरवॉल बंद कर दें?
cheesemacfly

1
अगर मैं अपने फ़ायरवॉल को बंद कर देता हूं तो मैं नोड को पूरी तरह से एक्सेस कर सकता हूं, धन्यवाद :) लेकिन निश्चित रूप से चीजों को करने का एक सुरक्षित तरीका होना चाहिए?
जोएल मर्फी

1
मैंने इसे अब वापस रख दिया है, चिंता न करें :) क्या मुझे वहां भी पोस्ट करना चाहिए? या क्या मेरे सवाल को आगे बढ़ाने का एक तरीका है? धन्यवाद
जोएल मर्फी

2
चीयर्स। मैंने इसे भी ध्वजांकित किया क्योंकि मैंने एक अन्य सूत्र में पढ़ा कि किसी उपयोगकर्ता द्वारा किसी कार्रवाई करने से पहले इसे 3 उपयोगकर्ताओं द्वारा ध्वजांकित किया जाना चाहिए
जोएल मर्फी

2
मेरे द्वारा उठाया गया झंडा सहायक माना गया है, इसलिए यह निश्चित नहीं है कि इसमें कितना समय लग सकता है!
चीज़केमफ्फ्फ़र

जवाबों:


11

सबसे अधिक संभावना है कि आपका नोड एप्लिकेशन 127.0.0.1"सभी आईपी" के बजाय लूपबैक आईपी पते के लिए बाध्यकारी है 0.0.0.0क्योंकि यह डिफ़ॉल्ट व्यवहार है listen। अपने कॉल में पोर्ट और आईपी दोनों को निर्दिष्ट करें server.listen(80, '0.0.0.0');और फिर से प्रयास करें।


3
यदि मैं ऐसा करता हूं, तब भी मैं अपने LAN पर किसी अन्य डिवाइस पर नोड एक्सेस नहीं कर सकता। मेरा कोड कुछ इस तरह दिखता है: var io = आवश्यकता ('socket.io'); var एक्सप्रेस = आवश्यकता ("एक्सप्रेस"); var app = express (); var सर्वर = आवश्यकता ('http')। createServer (ऐप) io = io.listen ('80 ',' 0.0.0.0 ');
जोएल मर्फी

2
यह मेरे मामले में काम आया। कुछ वायरलेस नेटवर्क localhostएक स्ट्रिंग के रूप में काम करते हैं, लेकिन दूसरों में आपको इसे टाइप करना होगा127.0.0.1
राउल रेने

यह वर्तमान में लिखे गए प्रश्न के प्रकाश में गलत है, क्योंकि यह वास्तव में LAN पते का उपयोग करके स्थानीय कंप्यूटर पर पहुँचा जा सकता है, जिसका अर्थ है कि यह उस पते पर भी सुन रहा है।
Arlen Beiler

6

आप वर्तमान स्थानीय नेटवर्क आईपी प्राप्त करें और इस तरह http सर्वर चलाएं:

server.listen(80, 'current_local_ip');

1
यह मेरे लिए काम करता है।
पुलसकेक

NodeJS डॉक्स बताता है कि यदि कोई IP निर्दिष्ट नहीं है, तो वह वाइल्डकार्ड (क्रम में: ::या 0.0.0.0) पर
सुनेगा

3

सबसे पहले, आपको C:\Program Files (x86)\nodeअपने फ़ायरवॉल में विश्वसनीय अनुप्रयोगों की सूची में जोड़ना होगा।

फिर, अपने नोड ऐप में, आप लिख सकते हैं:

listen(3333, '172.24.14.26', function() {

या:

listen(3333, '0.0.0.0', function() {

या:

listen(3333, function() {

या:

listen(80, '172.24.14.26', function() {

या:

listen(80, '0.0.0.0', function() {

या:

listen(80, function() {

इन 6 संयोजनों में से प्रत्येक मेरे मामले में काम करता है: एक कंपनी प्रॉक्सी द्वारा संरक्षित विंडोज सर्वर 2016 पर नोड.जेएस।


3

निम्नलिखित मेरे लिए एक विंडोज़ पीसी पर काम कर रहा है। यह कोशिश करो: खुला

कंट्रोल पैनल \ सिस्टम और सिक्योरिटी \ विंडोज डिफेंडर फ़ायरवॉल \ अनुमति देता है

सूची में नोड.जेएस के लिए अगला देखो और सेटिंग्स बदलें पर क्लिक करें> सुनिश्चित करें कि निजी पहुंच की जांच की गई है और फिर ठीक पर क्लिक करें।


3

मुझे इस समस्या का एक अच्छा समाधान मिला। सभी कॉन्फ़िगरेशन करने के बजाय (फ़ायरवॉल को सेट करना, पोर्ट को अग्रेषित करना आदि) मैंने स्थानीयटुनेल का उपयोग किया जो इंटरनेट पर स्थानीय नोड सर्वर को उजागर करने के लिए एक उपयोगिता है। आप इसे विकास, परीक्षण, साझा करने के उद्देश्य के लिए उपयोग कर सकते हैं, बस उत्पादन के लिए इसका उपयोग न करें।

सबसे पहले आपको लोकलूटनल को निम्नानुसार स्थापित करना होगा:

$npm install -g localtunnel

उसके बाद अपने नोड एप को कॉन्फ़िगर करें जैसे कि आपका नोड सर्वर लोकलहोस्ट पर चलना चाहिए। पूर्व के लिए:

server.listen(3000, function () {
console.log('Listening to port:  ' + port);
});

नीचे अपना_पोर्ट नोट करें जो मेरे मामले में 3000 था , और अपना नोड सर्वर शुरू करें।

स्थानीय टर्मिनल चलाने के लिए एक और टर्मिनल खोलें और निम्न कमांड टाइप करें।

$lt --port 3000

इसके बाद, टर्मिनल में आपको एक URL मिलेगा जिसे आप विकास / परीक्षण के उद्देश्य के लिए उपयोग कर सकते हैं। यह URL इंटरनेट पर उपलब्ध होगा ताकि आप इसे दूसरों के साथ भी साझा कर सकें। जब तक आपका लोकल टनल चल रहा है, तब तक अन्य लोग आपके स्थानीय नोड सर्वर तक पहुंच सकते हैं।

अधिक विन्यास विकल्पों / मदद के लिए आप प्रलेखन के माध्यम से जा सकते हैं: https://www.npmjs.com/package/localtunnel

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.