2014-04-24 16 views
5

Quindi sto provando a utilizzare l'applicazione heroku di esempio: https://github.com/lstoll/socket-io-chat-heroku come modello per creare la mia propria applicazione socket.io, ma sono in esecuzione su Express 4.0, Nodo 0.10.x e Socket.io 0.9.16.Heroku socket.io errore di esempio in Express 4.0

Ora il problema è che quando ho eseguito il mio server, tutto va bene, ma quando ho eseguito il mio cliente, ottengo il seguente errore:

Uncaught ReferenceError: require is not defined socket.io.js:12 
Uncaught ReferenceError: io is not defined chat2:2 

mio codice del server in questione è la seguente:

var app = express(); 
var http = require('http'); 
var server = http.createServer(app); 
var sio = require('socket.io'); 
var port = 3000 || process.env.PORT; 

server.listen(port); 
var io = sio.listen(server); 

io.sockets.on('connection'), function(socket) { 
    ... 
}); 

Sul mio lato client, ho il seguente: ho provato sia (questo è in giada, tra l'altro):

script(src='/socket.io/socket.io.js') OR script(src='http://localhost:3000/socket.io/socket.io.js') 
    var socket = io.connect() OR var socket = io.connect('http://localhost:3000') 

Nessuna di queste opzioni ha funzionato, causando sempre un errore sul lato client. C'è qualcosa di speciale da fare per Express 4.0? Ho fatto una domanda molto simile qui: Node.js /socket.io/socket.io.js not found express 4.0 ma questo è un altro tentativo di far funzionare la chat con un modello diverso.

Aggiornamento e modifica: dopo un po 'di lavoro, sono stato in grado di distribuire un'app di heroku utilizzando express 4.0 e socket.io, al numero: http://salty-escarpment-7398.herokuapp.com/chat.

Il problema ora è di integrare nuovamente dentro il mio attuale applicazione, e dopo tanto lavoro, io ora sto ottenendo un errore:

22:19:56 web.1 | GET /socket.io/?EIO=2&transport=polling 404 26ms - 1.67kb 
22:19:59 web.1 | GET /socket.io/?EIO=2&transport=polling 404 25ms - 1.67kb 

ho:

io.set('transports', ['xhr-polling']); 
io.set('polling duration', 10); 

Per impostarlo su xhr-polling, e il mio codice server è praticamente identico a quello che c'era sopra. La pagina si carica, però, ed è solo quando si tenta di inviare una chat che non accade nulla e 404 inizia a comparire.

Grazie

+0

Avete trovato una soluzione per gli errori 404 con '/socket.io/?EIO=2 ...'? – JVE999

risposta

0

Per impostazione predefinita Socket.IO 1.0.4 permette di votazione e WebSocket trasporti. Hai rimosso il trasporto di polling! restituire il trasporto di polling:

io.set('transports', ['websocket', 
        'flashsocket', 
        'htmlfile', 
        'xhr-polling', 
        'jsonp-polling', 
        'polling']);