2014-04-24 14 views
5

Próbuję użyć przykładowej aplikacji heroku: https://github.com/lstoll/socket-io-chat-heroku jako szablonu do zbudowania własnej aplikacji socket.io, ale korzystam z Express 4.0, Node 0.10.x i Socket.io 0.9.16.Przykładowy błąd Heroku socket.io w Express 4.0

Teraz problemem jest to, że gdy uruchamiam mój serwer, wszystko jest w porządku, ale gdy uruchamiam mojego klienta, pojawia się następujący błąd:

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

Moja odpowiedni kod serwera jest następujący:

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) { 
    ... 
}); 

na mojej stronie klienta, mam następujący: próbowałem obu (to jest w nefrytu, nawiasem mówiąc):

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') 

Żadna z tych opcji nie zadziałała, zawsze powodując błąd po stronie klienta. Czy jest coś specjalnego do zrobienia w Express 4.0? Zadałem bardzo podobne pytanie tutaj: Node.js /socket.io/socket.io.js not found express 4.0, ale jest to kolejna próba połączenia czatu z innym szablonem.

Aktualizacja i edycja: po pracy mogłem wdrożyć aplikację heroku za pomocą Express 4.0 i socket.io, pod adresem: http://salty-escarpment-7398.herokuapp.com/chat.

Problem jest teraz, aby zintegrować go z powrotem do mojego obecnego app i po dużo pracy, teraz otrzymuję błąd:

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 

mam:

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

ustawić go do xhr-polling, a mój kod serwera jest prawie identyczny z tym, co było powyżej. Strona ładuje się jednak tylko wtedy, gdy próbuje wysłać czat, że nic się nie dzieje, a 404 zaczyna się pojawiać.

Dzięki

+0

Znalazłeś rozwiązanie dla błędów 404 z '/socket.io/?EIO=2 ...'? – JVE999

Odpowiedz

0

Domyślnie Socket.IO 1.0.4 umożliwia ankietowanie i websocket transporty. Usunąłeś transport głosowania! zwróć transport zwrotny z powrotem:

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