javascript - får felet "websocket-anslutning ogiltig" när jag använder socket.io på en EC2-instans?


Jag har denna webbapp skriven med express och socket.io med node.js, appen fungerar utmärkt på localhost, men när jag lägger upp den på min ec2-server, ansluter den i ungefär 20 sekunder och kopplar sedan bort, och ansluter sedan igen osv...

ger mig felet på node-konsolen som

warn  - websocket connection invalid
info  - transport end

SERVER

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

CLIENT

socket = io.connect()

Jag vet att problemet inte ligger i min kod, eftersom jag har testat webbappen helt på localhost, så det enda problemet är var denna kod körs, vilket är på min EC2-instans.

Svar #1

Det kan finnas många möjliga anledningar till att du får detta fel:

  1. Du använder en webbläsare som delvis eller inte alls stöder websockets. Du kan kontrollera om din webbläsare stöder websockets här.
  2. Att använda en proxy som inte stödjer websocket. Om det finns någon server (load balancer) mellan din klient och din nodserver som inte stödjer websocket.
  3. Du använder socket.io version 0.9.1/0.9.1-1. Detta beteende är ett rapporterat fel för denna version. Så uppgradera till den senaste socket.io-versionen som är 0.9.14.
  4. Webbläsarens anslutning är blockerad av brandvägg.
  5. Kodrelaterat problem.

Svar #2

Se till att du använder de senaste versionerna av node, express och socket.io på din EC2. Ge också viss information om de versioner som för närvarande används både på din lokala dator och på EC2-instansen.