Ho un problema con gli esempi di socket.io. Il mio browser non può ottenere il file socket.io.js (errore 404 nella console).Il browser non può ottenere il file socket.io.js utilizzando express
codice che funziona:
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>
Ma questo non uno:
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>
In questo caso il mio browser non è possibile ottenere il file socket.io.js.
Ok, ora browser può ottenere socket.io.js, ma ci è prossimo errore, riga "var client = require ('socket.io-client');" in socket.io.js: Uncaught ReferenceError: require non è definito. –
Ho sbagliato, mi dispiace per il fuorviante. Ho aggiornato la mia risposta. –
Ancora non funziona, quando aggiungo
Cosa versione Express stai usando?
L'API è cambiato da espresso 2.xa 3.x, quindi la risposta è nella compatibilità sezione Socket.IO al Migrating from 2.x to 3.x wiki:
metodo di Socket.IO
.listen()
accetta un'istanzahttp.Server
come argomento.A partire da 3.x, il valore di ritorno di
express()
non è un'istanzahttp.Server
. Per ottenere Socket.IO lavorare con espresso 3.x, assicurarsi che si crea manualmente e passare l'istanzahttp.Server
a.listen()
il metodo di Socket.IO:fonte
2013-01-19 18:07:49