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:
- 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.
- 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.
- 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.
- Łączność przeglądarki jest zablokowana/przez zaporę sieciową.
- 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.