दिलचस्प पोस्ट
क्या pthread_exit को मुख्य से कॉल करना ठीक है? कैसे वीसी ++ 2008 पुनर्वितरण का पता लगा सकता है? Google मानचित्र पर पारदर्शी गोल कोनों क्या मैं जीसीसी मुझे बता सकता हूँ जब एनएएन या आईएनएल में रनटाइम पर गणना परिणाम होता है? जावा सीरियलाइजेशन का सबसे अच्छा विकल्प कौन सा है? अपवाद जो एप्लिकेशन कोड में प्रयास-कैल ब्लॉक द्वारा नहीं पकड़े जा सकते PHPMailer के साथ त्रुटि हैंडलिंग अपवाद: 'क्लोजर' के सीरियलाइजेशन की अनुमति नहीं है तिथि के अनुसार git चेकआउट आईफ़ोन नेविगेशन बार केवल प्रथम पृष्ठ पर छुपाएं Chmod 777 के साथ सर्वर कैसे कमजोर हो सकता है? Inno सेटअप हमेशा व्यवस्थापक की AppData निर्देशिका में स्थापित करता है Magento डिबग हेडरस ने पहले से ही त्रुटि भेजी शेल स्क्रिप्ट से जेएमएक्स एमबीईई विधि को कॉल करना स्कला मामले वर्ग उत्तराधिकार

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

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

यह तब तक ठीक काम करता है जब तक मैं स्थानीय होस्ट पर हूं, लेकिन मैं इसे देखने के लिए उसी इंट्रानेट पर अन्य कमांडरों को नहीं मिल सकता। मैं पोर्ट 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 को सुनने के लिए () जोड़ते हैं लेकिन ऐसा नहीं लगता कि सुनने के लिए () एक आईपी मास्क पैरामीटर लेता है।

Solutions Collecting From Web of "नोड.जेएस कनेक्ट केवल स्थानीयहोस्ट पर काम करता है"

सबसे संभवतः आपका सर्वर सॉकेट लूपबैक आईपी एड्रेस 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