Wyszukiwanie w witrynie

javascript - otrzymywanie błędu „połączenie websocket nieprawidłowe” używając socket.io na instancji EC2?


Mam tę aplikację webową napisaną przy użyciu express i socket.io na node.js, aplikacja działa świetnie na localhost, ale kiedy wgrywam ją na mój serwer ec2, łączy się przez około 20 sekund, potem rozłącza, a następnie znowu łączy itd...

wyświetla mi błąd w konsoli Node jako

warn  - websocket connection invalid
info  - transport end

SERWER

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

KLIENT

socket = io.connect()

Wiem, że problem nie leży w moim kodzie, ponieważ w pełni przetestowałem aplikację internetową na localhost, więc jedynym problemem jest miejsce, w którym uruchamiany jest ten kod, czyli moja instancja EC2.

Odpowiedź #1

Może być wiele możliwych powodów, dla których możesz otrzymać ten błąd:

  1. Używasz przeglądarki, która częściowo lub w ogóle nie obsługuje websocketów. Możesz sprawdzić, czy Twoja przeglądarka obsługuje websockets tutaj.
  2. Używanie serwera proxy, który nie obsługuje websocketów. Jeśli między klientem a serwerem Node znajduje się jakiś serwer (load balancer), który nie obsługuje websocketów.
  3. Używasz wersji socket.io 0.9.1/0.9.1-1. To zachowanie jest zgłoszonym błędem w tej wersji. Zaktualizuj więc do najnowszej wersji socket.io, która to 0.9.14.
  4. Łączność przeglądarki jest zablokowana/przez zaporę sieciową.
  5. Problem związany z kodem.

Odpowiedź #2

Upewnij się, że używasz najnowszych wersji node, express i socket.io na swoim EC2. Podaj również dane o aktualnie używanych wersjach zarówno na swoim lokalnym komputerze, jak i na instancji EC2.