2013-01-05 15 views
14

Używam socket.io z node.js na Heroku. Wszystko wydaje się działać. Jednak na pasku twórców Chrome otrzymuję Unexpected response code: 503. Czy ktoś wie, co to może oznaczać? Czy powinienem się tym przejmować? Czy zajmie pamięć w przeglądarce? A jeśli tak, czy mogę go stłumić?"Nieoczekiwany kod odpowiedzi: 503" w przeglądarce Chrome. Być może ma to związek z socket.io na heroku?

+0

Możesz znaleźć kod błędu tutaj: https://devcenter.heroku.com/articles/error-codes może ci to pomoże. –

+1

Czy używasz websockets? Ponieważ nie możesz na Heroku. Więcej informacji tutaj: https://devcenter.heroku.com/articles/using-socket-io-with-node-js-on-on-onoku –

Odpowiedz

27

Heroku "nie obsługuje" sieci Web na stosie cedrowym jeszcze (brak słowa, kiedy będą) Aktualizacja: patrz poniżej. They recommend dodając następujący kod do implementacji Socket.io:

// assuming io is the Socket.IO server object 
io.configure(function() { 
    io.set("transports", ["xhr-polling"]); 
    io.set("polling duration", 10); 
}); 

Powodem tego jest to, że Heroku dodaje warstwę routingu na górnej części hamowni. Twój kod zostanie wykonany na serwerze a, ale nie jest deterministyczny, który serwer będzie. W związku z tym WebSockets nie może wysyłać danych do "właściwego" serwera. Socket.IO przerzuci się na long-polling, który utrzymuje połączenie przy życiu poprzez warstwę routingu, zapewniając, że zdarzenia będą wykonywane na właściwym serwerze.

AKTUALIZACJA: Heroku WebSockets jest już w publicznej wersji beta! Możesz dodać obsługę WS do swojej aplikacji, wykonując heroku labs:enable websockets -a myapp w swoim katalogu aplikacji.

+4

Próbowałem użyć zaktualizowanej odpowiedzi. Jednak gdy to zrobię, nadal otrzymuję błąd 503. Używam domeny niestandardowej i skonfigurowałem serwer DNS do przekierowania na ws: // – Alexis

+0

Tak jak w odpowiedzi, nadal jest to wersja beta. W tym momencie lepiej będzie skontaktować się z obsługą Heroku. – SomeKittens

+8

Zdobycie 503 –

3

Dla osób pochodzących z google w 2016

Heroku WebSocket są teraz obsługiwane, nie ma potrzeby, aby je włączyć. WebSockets on Heroku

Upewnij się, aby sprawdzić dzienniki na Heroku. Zauważyłem błąd 503 w chrome i po sprawdzeniu logów okazało się, że moja aplikacja Heroku się zawiesiła. Wystąpił błąd w moim kodzie, który spowodował, że nie odpowiadał (w ogóle nie dotyczy socket.io)

Naprawiono kod i 503 odszedł!

+1

Co zrobiłeś, aby naprawić kod? Aplikacja mojego węzła znajduje się na cedrze Heroku-14. Nadal otrzymuję "nieoczekiwany kod odpowiedzi: 503" podczas wywoływania 'var ws = new WebSocket ('ws: //myapp.herokuapp.com');'. – MobileDream

+1

Czym dokładnie jest twój błąd i jak to naprawiłeś? – Jhn

Powiązane problemy