दिलचस्प पोस्ट
मैं एक एसक्यूएल कथन में यूजर-सप्लाई इनपुट कैसे जोड़ सकता हूं? जावा में एक स्ट्रिंग से डुप्लिकेट निकालना सीधे मेरी एंड्रॉइड एप्लिकेशन में ZXing लाइब्रेरी को एकीकृत करना सत्र कुकी को कैसे हटाएं? MATLAB के MEX कंपाइलर के रूप में जीसीसी (मिनजीडब्ल्यू) का उपयोग करना "फाइल डाउनलोड" पॉपअप बंद होने पर पता लगाना एएसपी.नेट एमवीसी में ऑथराइज एट्रिब्यूट ओवरराइड करें एंड्रॉइड स्टूडियो ग्रेडले को बिल्ड करने में अधिक समय लगता है रैखिक प्रतिगमन और समूह आर द्वारा आर WinForm लेबल में पाठ स्वरूपण पायथन ऑब्जेक्ट के तरीकों को खोजना प्रतिनिधित्व में फ़्लोटिंग प्वाइंट एरर? एक WebView में एक लिंक से खुला मोबाइल सफारी सेलेनियम वेबड्राइवर को ठीक कैसे करें एक्सपैशन: ब्राउज़र कनेक्ट होने से पहले ही प्रतीत होता है? PostgreSQL बहु INSERT … एकाधिक स्तंभों के साथ वापस आ रहा है

नोड.जेएस कनेक्ट केवल स्थानीयहोस्ट पर काम करता है

मैंने कनेक्ट का उपयोग करते हुए एक छोटे से नोड। जेएस ऐप लिखा है, जो एक वेब पेज को दिखाता है, फिर उसे नियमित अपडेट भेजता है। यह एक डिस्क फ़ाइल में उपयोगकर्ता टिप्पणियों को भी स्वीकार करता है और लॉग करता है।

यह तब तक ठीक काम करता है जब तक मैं स्थानीय होस्ट पर हूं, लेकिन मैं इसे देखने के लिए उसी इंट्रानेट पर अन्य कमांडरों को नहीं मिल सकता। मैं पोर्ट 3000 का उपयोग कर रहा हूं, लेकिन पोर्ट 8080 या 80 में बदलने से मदद नहीं मिली

यहां कोड है जिसे मैं कनेक्शन सेट अप करने के लिए उपयोग कर रहा हूं:

var io = require('socket.io'), connect = require('connect'); var app = connect().use(connect.static('public')).listen(3000); var chat_room = io.listen(app); 

जैसा कि ऊपर बताया गया है, मैंने 8080 या 80 तक पोर्ट नंबर बदलने की कोशिश की है, और मुझे कोई फर्क नहीं दिखाई पड़ रहा है, इसलिए मुझे नहीं लगता कि यह फ़ायरवॉल समस्या है (लेकिन मैं गलत हो सकता है)। मैंने भी सोचा है कि, एचटीटीपी के साथ काम करने वाले समान प्रश्नों को पढ़ने के बाद, 0.0.0.0 को सुनने के लिए () जोड़ते हैं लेकिन ऐसा नहीं लगता कि सुनने के लिए () एक आईपी मास्क पैरामीटर लेता है।

वेब के समाधान से एकत्रित समाधान "नोड.जेएस कनेक्ट केवल स्थानीयहोस्ट पर काम करता है"

सबसे संभवतः आपका सर्वर सॉकेट लूपबैक आईपी एड्रेस 127.0.0.1 के लिए "सभी आईपी पते" सिम्बैलिक आईपी 0.0.0.0 (नोट यह नेटमैस्क नहीं है) के बजाय है। इसकी पुष्टि करने के लिए, sudo netstat -ntlp चलाएँ (यदि आप लिनक्स पर हैं) या netstat -an -f inet -p tcp | grep LISTEN netstat -an -f inet -p tcp | grep LISTEN (OSX) और जांचें कि आपकी आईपी किस प्रक्रिया के लिए बाध्य है (": 3000" के साथ लाइन की तलाश करें) यदि आप "127.0.0.1" देखते हैं, तो यह समस्या है। कॉल को "0.0.0.0" पास करके इसे ठीक करें:

 var app = connect().use(connect.static('public')).listen(3000, "0.0.0.0"); 

अन्य उपयोगकर्ताओं के लिए अपनी स्थानीय मशीन तक पहुंच प्राप्त करने के लिए, मैं आम तौर पर ngrok का उपयोग करता हूं । Ngrok वेब पर आपके स्थानीय होस्ट को उजागर करता है, और एक एनपीएम आवरण जो स्थापित और प्रारंभ करने के लिए सरल है:

 $ npm install ngrok -g $ ngrok http 3000 

इस उदाहरण के उपयोग को देखें:

यहां छवि विवरण दर्ज करें

उपर्युक्त उदाहरण में, लोकलहोस्ट: 3000 पर पाल का स्थानीय चलने वाला उदाहरण अब इंटरनेट पर उपलब्ध है: http://69f8f0ee.ngrok.io या https://69f8f0ee.ngrok.io

0.0.0.0 के लिए बाध्यकारी आधा लड़ाई है एक आईपी फ़ायरवॉल (सिस्टम प्राथमिकताओं में से एक से अलग) है जो कि टीसीपी पोर्ट को ब्लॉक करता है। इसलिए बंदरगाह को वहां से भी अनवरोधित किया जाना चाहिए:

sudo ipfw किसी भी किसी से किसी भी टीसीपी अनुमति देते जोड़ें

इस समस्या के लिए मेरे पास एक बहुत आसान समाधान है: process.argv आपको नोड ऐप को पारित किए गए तर्कों की एक सूची देता है। इसलिए यदि आप चलाते हैं:

node server.js 0.0.0.0

आपको मिलेगा:

process.argv[0] //=> "node"
process.argv[1] //=> "server.js"
process.argv[2] //=> "0.0.0.0"

तो आप इसे निर्दिष्ट करने के लिए process.argv[2] का उपयोग कर सकते हैं, जैसा कि आईपी पता जिसे आप सुनना चाहते हैं:

http.listen(3000, process.argv[2]);

अब, आपका ऐप "सभी" IP पतों को सुन रहा है, उदाहरण के लिए:

http://192.168.1.4:3000/your_app

मुझे उम्मीद है कि यह किसी की मदद करेगा!

आपके ऐप पर, नेटवर्क में किसी भी डिवाइस से इसे पहुंच योग्य बना देता है:

 app.listen(3000, "0.0.0.0"); 

न्योडजेएस के लिए Azure, GCP और AWS में

एज़्योर वीएम के लिए संसाधन प्रबंधक में तैनात, अपने वर्चुअल नेटवर्क सुरक्षा समूह की जांच करें और इसे पहुंचने के लिए बंदरगाहों या बंदरगाहों को खोलें, अन्यथा आपके बादलों के अंत में अगर vm को नीला के पुराने संस्करण में तैनात किया गया है तो

बस जीसीपी और एडब्ल्यूएस के लिए इसके बराबर देखें

इस पंक्ति के साथ मेरे लिए कार्य करना (बस चलने पर लिस्टेड जोड़ें):

 node server.js -p 3000 -a : --listen 192.168.1.100 

आशा करता हूँ की ये काम करेगा…

Fedora या Centos distro मेरे मामले firewalwal में अपने selinux और firewalld जांच कनेक्शन को रोका:

 सेलिनक्स: $ सेस्टेटस
 SELinux स्थिति: सक्षम
 SELinuxfs माउंट: / sys / fs / selinux
 SELinux रूट निर्देशिका: / etc / selinux
 लोड किया गया नीति नाम: लक्षित
 वर्तमान मोड: {{checkmode}}
 कॉन्फ़िग फ़ाइल से मोड: {{checkconfig}}
 नीति एमएलएस स्थिति: सक्षम
 नीति deny_unknown स्थिति: अनुमति दी
 अधिकतम कर्नल नीति संस्करण: 30

 फायरवालल स्थिति: $ systemctl स्थिति firewalld