2015-10-17 7 views
14

मैं वर्तमान में सॉकेट.आईओ फ्रो नोडज के साथ काम कर रहा हूं ताकि सर्वर और कुछ क्लाइंट के बीच कुछ वास्तविक समय की जानकारी साझा की जा सके। ग्राहकों को केवल एक दूसरे के साथ नहीं, सर्वर के साथ संवाद करना चाहिए।सॉकेट.आईओ?

विंडोज़ पर सबकुछ ठीक है और मैं जानकारी साझा कर सकता हूं, लेकिन जैसे ही यह चीजों को लिनक्स वीपीएस पर रखता है, मुझे समस्या है कि उसने आईपीवी 6 सॉकेट पर सब कुछ शुरू किया है जिससे क्लाइंटसाइड ब्राउज़र से कनेक्ट करना मुश्किल हो गया से

socket.io

मैं शुरू इस तरह सर्वर पुस्तकालय:

io = require('socket.io').listen(3000); 

जो ठीक काम किया, और मैं कनेक्ट कर सकते हैं। अब लिनक्स VPS पर मैं इस

io = require('socket.io').listen(3000, '0.0.0.0'); 

की तरह एक IPv4 पता का उपयोग कर, लेकिन वह काम नहीं किया, लिनक्स पर नहीं और खिड़कियों पर नहीं करके IPv6 को रोकने की कोशिश की। उन्होंने कहा कि आईपी के सॉकेट मैं यह चाहते बाध्य नहीं है, जब तक कि मैं इस तरह http सर्वर का उपयोग:

http = require('http').createServer().listen(3000, '0.0.0.0'); 
io = require('socket.io').listen(http); 
अब

मेरे सवाल है, मैं करने के लिए सॉकेट बंधन की समस्या को हल करने के लिए http सर्वर का उपयोग करने की क्या ज़रूरत है सही स्थानीय आईपी और बंदरगाह या कोई और समाधान है? और सॉकेटियो कोड की पहली पंक्ति के मामले में पृष्ठभूमि में एक http सर्वर शुरू करता है, क्योंकि यह एक वेब सॉकेट है, या http सर्वर के बिना सॉकेटियो काम करता है?

आपको बहुत बहुत धन्यवाद :)

उत्तर

20

Socket.io, और WebSockets सामान्य रूप में, प्रारंभिक हाथ मिलाना के लिए एक http सर्वर की आवश्यकता है। तो अगर आप http सर्वर के साथ सॉकेट.ओओ की आपूर्ति नहीं करते हैं तो यह आपके लिए एक बना देगा।

समस्या यह है कि आपके io.listen(3000, '0.0.0.0') में दूसरा पैरामीटर सॉकेट.ओ द्वारा अनदेखा किया जाता है। आप अपने आखिरी स्निपेट के साथ जाने से बेहतर हैं क्योंकि यह अनिवार्य रूप से बिल्कुल सही है जो सॉकेट.ओ दृश्यों के पीछे करता है। एकमात्र असली अंतर यह है कि आप नियंत्रित कर सकते हैं कि कौन सा इंटरफ़ेस सुनना है।

+0

बहुत बहुत धन्यवाद, जो मुझे बहुत कम मदद करता है + 1 – Arkensor

संबंधित मुद्दे