2014-12-10 6 views
33

मैं एक्सप्रेस के साथ सॉकेटियो का उपयोग कर रहा हूं।सॉकेटियो- प्राप्त करें http: // localhost: 3000/socket.io /? ईआईओ = 3 और परिवहन = मतदान और टी = 1418187395022-0 404 (नहीं मिला)

मेरी परियोजना में मेरे पास एक लॉगिन पृष्ठ और एक होम पेज है। जब मैं सफल प्रवेश मैं स्थानीय होस्ट करने के लिए नेविगेट करें:

GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=1418187395022-0 404 (Not Found) 

मैं अपने app.js में किसी भी संशोधन (एक्सप्रेस द्वारा बनाई गई परियोजना) नहीं किया: 3000/घर जहां मैं इस त्रुटि मिलती है।

Index.js: 3000/घर:

var express = require('express'); 
var router = express.Router(); 
var http = require('http'); 
var fs = require('fs'); 
var io = require('socket.io')(http); 
/* GET home page. */ 
router.get('/', function(req, res) { 
    res.render('index', { title: 'Express' }); 
}); 

router.get('/home', function(req, res) { 
    res.render('home', { title: 'Express' }); 
}); 

io.on('connection', function(socket){ 
    console.log("User Connected"); 
    socket.on('chat message', function(msg){ 
    io.emit('chat message', msg); 
    console.log("Message"); 
    }); 
    socket.on('disconnect', function(msg){ 
    console.log("User DisConnected"); 
    }); 

}); 

router.post('/authenticate', function(req, res) { 
    fs.readFile("./public/Verification/Users.json", "utf8", function (err, data) { 
     if (err) 
      console.log(err); 
     else{ 
      var result = JSON.parse(data); 
      for(var i=0;i<result.Users.length;i++){ 
       if(req.body.username == result.Users[i].username && req.body.password ==  result.Users[i].password){ 
        console.log("Success!!!!!!!!!!!!!!"); 
        res.location("home"); 
        res.redirect("home"); 
       } 
      } 
     } 
     }); 
}); 

module.exports = router; 

मैं इस त्रुटि जब भी मैं स्थानीय होस्ट करने के लिए नेविगेट मिलता है। मैं सॉकेटियो और एक्सप्रेस दोनों के लिए नया हूं। कृपया मुझे बताएं कि मुझे कुछ याद आ रहा है या नहीं।

धन्यवाद

संपादित:

मेरी layout.jade में मैं इस तरह socketio परिभाषित:

script(src='https://cdn.socket.io/socket.io-1.2.0.js') 
+0

पोर्ट एक्सप्रेस 3000 पर सुनने के लिए आपका एक्सप्रेस सर्वर कॉन्फ़िगर किया गया है? मुझे वह हिस्सा कहीं भी नहीं दिख रहा है? और, इससे पहले कि आप io सर्वर पक्ष को हुक अप करें। – jfriend00

+0

डिफ़ॉल्ट रूप से यह 3000 सुन रहा है। मैंने कुछ भी कॉन्फ़िगर नहीं किया है। – Zee

+0

पोर्ट 3000 पर कोई डिफ़ॉल्ट नहीं है जिसे मैं जानता हूं। यदि लोकलहोस्ट: 3000/घर एक त्रुटि उत्पन्न करता है, तो आपके पास पोर्ट वेब पर ठीक से काम नहीं कर रहा है। एक्सप्रेस का कौन सा संस्करण आप चल रहे हैं? – jfriend00

उत्तर

45

आप एक्सप्रेस 4 चला रहे हैं, यह मेरे लिए आप की तरह दिखाई देता ' कोड की रेखाएं गायब हो रही हैं:

var app = express(); 
var server = app.listen(3000); 

यही कारण है कि अपने वेब सर्वर शुरू करने और बंदरगाह 3000 के लिए सेट होगा हड्डी देखें यहाँ सरल एक्सप्रेस 4 एप्लिकेशन:, http://expressjs.com/4x/api.html

और फिर socket.io शुरू करने के लिए, आप जोड़ना होगा:

var io = require('socket.io').listen(server); 

और

var http = require('http'); 
+1

हां मैं एक्सप्रेस 4 का उपयोग कर रहा हूं। मैंने इस कोड को app.js में रखा है और यह मुझे "EADDRINUSE" त्रुटि दे रहा है। – Zee

+0

हाँ काम कर रहा है !! गलती से मैंने index.js में एक ही कोड जोड़ा, और वह जहां यह त्रुटि दे रहा था। धन्यवाद। – Zee

+0

धन्यवाद, मेरा दिन बचाया –

25

जब से मैं पिछले 5 घंटे के लिए इस मुद्दे के साथ संघर्ष कर रहे थे:, इस लाइन के लिए कोई जरूरत नहीं है। और यह Google में पहला परिणाम है।

बेशक इसके 2015 और कुछ कोड बदल गए हैं।

मैं वर्तमान में लगता है index.js कोड की सबसे अच्छी शुरुआत है:

var express = require('express'), 
    http = require('http'); 
var app = express(); 
var server = http.createServer(app); 
var io = require('socket.io').listen(server); 

server.listen(3000); 

आदेश अत्यधिक महत्वपूर्ण है।

मेरी समस्या यह थी कि सब ठीक से स्थापित किया गया था और नोड सुन रहा था। हालांकि example.com/socket.io/socket.io.js और example.com/socket.io/?eio = ... 404 नहीं मिला था। हालांकि, जब मैंने example.com:3000/socket.io/socket.io.js की कोशिश की तो सब कुछ काम किया। तो अब सवाल था, पोर्ट भाग रखने के लिए getJSON क्वेरी को कैसे बदलें।

तो समाधान main.js को संपादित करना था, जिसे index.html में जोड़ा जा रहा है, जहां आपकी चैट है। है:

var socket = io(); 

यह getJSON यूआरएल प्रश्नों और सही बंदरगाह और कोई और अधिक 404. मुझे आशा है कि यह भविष्य में किसी को मदद करता है कहते हैं सही करता

var socket = io.connect('http://example.com:3080'); 

साथ बदला जाएगा।

+2

चयनित समाधान काम नहीं किया लेकिन यह एक किया :) धन्यवाद :) –

+0

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

+0

मैंने nginx conf को देखने की कोशिश की, और वहां निम्न पंक्ति जोड़ा: – undefined

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