मैं socket.io (1.3.5) के साथ एक सरल Node.js एप्लिकेशन है, socket.io उदाहरण से लिया:Socket.io ग्राहक बंदरगाह अनदेखी जब नाम स्थान में इस्तेमाल किया [बग?]
// Setup basic express server
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
var port = process.env.PORT || 3000;
server.listen(port, function() {
console.log('Server listening at port %d', port);
});
// Routing
app.use(express.static(__dirname + '/public'));
io.of('/admin').on('connection', function(socket){
//handle conection on /admin namespace
});
io.of('/user').on('connection', function(socket){
//handle conection on /user namespace
});
अब में मेरे सामने के अंत मैं तो जैसे इन विशिष्ट नामस्थान से कनेक्ट (फिर से, उदाहरण से लिया गया):
var admin_socket = io('/admin');
var user_socket = io('/user');
एप्लिकेशन पोर्ट 3000 पर चल रहा है और वेबसाइट यूआरएल localhost:3000
का उपयोग कर खोला जाता है।
जब कर रही है कि मैं CORS त्रुटियों हो रही है, यह ग्राहक के पक्ष Socket.io की तरह लगता है ऑटो का पता लगाने के रूप में जल्द ही मैं नामस्थान का उपयोग शुरू कर के रूप में पोर्ट संख्या नहीं है (फ़ायरफ़ॉक्स देव उपकरण में मैं अनुरोध localhost:3000/
बजाय localhost/
के लिए जा रहा देख सकते हैं)।
नामस्थान मेरे सर्वर साइड पर मैं उपयोग नहीं करते हैं:
var socket = io();
सब कुछ काम करता है ठीक, बंदरगाह ऑटो:
io.on('connection', function(socket){
//handle general conection
});
और सामने के अंत पर मैं इस तरह से कनेक्ट -डिस्वरी काम करता है और फ़ायरफ़ॉक्स देव उपकरण में मैं localhost:3000/
पर कनेक्शन देख सकता हूं।
वैकल्पिक रूप से, अगर मैं अभी भी अपने बैक-एंड पर नामस्थान उपयोग करें, और सामने के छोर पर मैं बहुत तरह कनेक्ट:
var admin_socket = io('localhost:3000/admin');
var user_socket = io(':3000/user'); //I can skip localhost
फिर सब कुछ काम करता है (और वास्तव में फ़ायरफ़ॉक्स देव उपकरण में मैं नेटवर्क देख सकते हैं अनुरोध localhost:3000/
पर जा रहे हैं)।
पोर्ट ऑटो-डिस्कवरी नामस्थानों के साथ कैसे काम नहीं कर रही है? क्या इसे काम करने का कोई तरीका है? क्या मुझसे कोई चूक हो रही है? धन्यवाद।
मेरा उत्तर पोर्ट के साथ गड़बड़ करने के लिए
इस बग वास्तव में कष्टप्रद था, socket.io के किसी भी पुराने संस्करणों में वहाँ नहीं था। फिक्स के लिए धन्यवाद! – Evers
1.3.6 में बग अभी भी मौजूदा है, जहां यह मेरे समय का एक दिन खाया। फिक्स के साथ इस लेखन के लिए बहुत धन्यवाद - मैं डिफ़ॉल्ट नामस्थान में काम करने की खोज पर रुका था। – willw
क्या आप अपना * उत्तर * * प्रश्न * से बाहर * एक * उत्तर * में ले जा सकते हैं? – phihag