2012-04-17 10 views
11

का उपयोग कर socket.io.js फ़ाइल नहीं मिल सकती है मुझे सॉकेट.ओ उदाहरणों में समस्या है। मेरा ब्राउज़र socket.io.js फ़ाइल (कंसोल में 404 त्रुटि) नहीं मिल सकता है।ब्राउज़र को


कोड है कि काम करते हैं:

server.js

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

app.listen(80); 

app.get('/', function (req, res) { 
    res.sendfile(__dirname + '/index.html'); 
}); 

io.sockets.on('connection', function (socket) { 
    socket.emit('news', { hello: 'world' }); 
    socket.on('my other event', function (data) { 
    console.log(data); 
    }); 
}); 

index.html

<script src="http://192.168.1.104:81/socket.io/socket.io.js"></script> 
<script> 
    var socket = io.connect('http://192.168.1.104:81'); 
    socket.on('news', function (data) { 
    console.log(data); 
    socket.emit('my other event', { my: 'data' }); 
    }); 
</script> 


लेकिन यह नहीं एक:

01,235,

server.js

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

app.listen(80); 

app.get('/', function (req, res) { 
    res.sendfile(__dirname + '/index.html'); 
}); 

io.sockets.on('connection', function (socket) { 
    socket.emit('news', { hello: 'world' }); 
    socket.on('my other event', function (data) { 
    console.log(data); 
    }); 
}); 

index.html

<script src="http://192.168.1.104:80/socket.io/socket.io.js"></script> 
<script> 
    var socket = io.connect('http://192.168.1.104:80'); 
    socket.on('news', function (data) { 
    console.log(data); 
    socket.emit('my other event', { my: 'data' }); 
    }); 
</script> 

इस मामले में अपने ब्राउज़र socket.io.js फ़ाइल नहीं मिल सकता है।

उत्तर

7

संपादित करें: नीचे दिए गए सभी पाठ अगले "EDIT" तक गलत हैं। एक निशान के रूप में वहाँ यह छोड़ रहे हैं ...

वहाँ एक बात आपको पता होना चाहिए है, दो बातें आपको क्या करना चाहिए + सभी आवश्यक Express doc is here:

  1. एक्सप्रेस फिल्टर/अपने नोड सर्वर के लिए हर पहुँच संभाल। इसका अर्थ यह है कि जब आप अपनी socket.io स्क्रिप्ट फ़ाइल तक पहुंचने का प्रयास कर रहे हैं, तो एक्सप्रेस आपके द्वारा घोषित मार्गों में खोजने की कोशिश करता है और विफल रहता है जैसा आपने नहीं किया था (और आप सही नहीं थे)।
  2. सबसे महत्वपूर्ण है: एक स्थिर, गैर "गणना" फ़ोल्डर घोषित में व्यक्त है जहाँ आप अपने सभी स्थैतिक फ़ाइलें (सीएसएस, ग्राहक लिपियों, चित्र) रखा जाएगा:

    app.use('/static', express.static(__dirname + '/static'));

    इस लाइन डाल दिया जाना चाहिए app.configure कॉल, app.use(app.router) से पहले (मैं वास्तव में इसे पहले रखता हूं)

    मुझे यह/स्थैतिक/स्क्रिप्ट होना पसंद है;/स्थिर/सीएसएस;/स्थिर/आईएमजी फ़ोल्डर संगठन लेकिन आप अपनी जरूरतों को अनुकूलित करने के लिए स्वतंत्र हैं।

  3. बदलें एक रिश्तेदार पथ को socket.io स्क्रिप्ट फ़ाइल के लिए लिंक (वैकल्पिक है लेकिन सलाह दी): src='/static/scripts/socket.io/socket.io.js'

संपादित: मैं गलत, बहुत बहुत गलत हूँ और मैं माफी चाहता हूँ उसके लिए। Socket.io आवश्यक विभिन्न पथ/फ़ाइलों को उत्पन्न करता है और आपको उन्हें घोषित करने की आवश्यकता नहीं है और न ही किसी क्लाइंट स्क्रिप्ट फ़ाइलों की प्रतिलिपि बनाना है।

कृपया <script src="http://192.168.1.104:81/socket.io/socket.io.js"></script> क्लाइंट लाइन को सामान्य रिश्तेदार <script src="/socket.io/socket.io.js"></script> पर स्विच करने का प्रयास करें क्योंकि यह आपके कोड और एक्सप्रेस मार्गदर्शिका कोड के बीच एकमात्र अंतर है।

+0

ठीक है, अब ब्राउज़र, socket.io.js प्राप्त कर सकते हैं लेकिन वहाँ अगली त्रुटि है, लाइन "var क्लाइंट = आवश्यकता है ('socket.io-client');" socket.io.js में: Uncaught ReferenceError: आवश्यकता परिभाषित नहीं है। –

+1

मैं गलत था, भ्रामक के लिए खेद है। मैंने अपना जवाब अपडेट किया। –

+0

यह अभी भी काम नहीं करता है, जब मैं अपने एचटीएमएल में

6

क्या एक्सप्रेस संस्करण क्या आप उपयोग कर रहे हैं?

एपीआई एक्सप्रेस 2.x से बदल गया है 3.x के लिए है, तो जवाब Migrating from 2.x to 3.x विकी Socket.IO अनुकूलता खंड में है:

Socket.IO के .listen() विधि एक http.Server उदाहरण लेता है एक तर्क के रूप में।
3.x के रूप में, express() का वापसी मूल्य http.Server उदाहरण नहीं है। Socket.IO एक्सप्रेस 3.x के साथ काम करने के लिए, आप मैन्युअल रूप से बनाने के लिए सुनिश्चित करें और Socket.IO के .listen() विधि करने के लिए अपने http.Server उदाहरण पारित:

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

server.listen(3000); 
संबंधित मुद्दे