2013-04-25 45 views
6

我有這個使用node.js編寫的express和socket.io的web應用程序,該應用程序在本地主機上運行良好,但是當我推到我的ec2服務器時,它連接了20秒,然後斷開連接,然後重新連接等。 ..在ec2實例上使用socket.io獲取「websocket連接無效」錯誤?

給我錯誤的節點控制檯上作爲

warn - websocket connection invalid 
info - transport end 

服務器

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

CLIENT

socket = io.connect() 

我知道這個問題是不是與我的代碼,因爲我完全測試在本地主機上的Web應用程序,所以唯一的問題就是這個代碼運行,這是我的EC2實例?

+0

你直接或通過ELB連接到實例? – 2013-04-25 08:32:50

+0

我直接連接到實例? – unknown 2013-04-25 10:58:17

+0

任何人都可以回答這個問題,它真的很煩人! – unknown 2013-04-27 08:13:30

回答

2

確保你在ec2上使用最新版本的node,express和socket.io。另外,請在本地機器和ec2實例上提供有關當前使用版本的一些數據。

1

在本地機器上運行,您不必處理網絡延遲,NAT問題或防火牆。在EC2上運行,你擁有所有這些。

網絡套接字相對較新且不穩定。因此,首先確保您正在運行最新版本(並讓我們知道它們是什麼)。也許本地機器上安裝的socket.io版本與安裝在EC2服務器上的版本不同。

4

可能有很多可能的原因,你可以得到這個錯誤:

  1. 您正在使用的瀏覽器部分或不支持WebSockets的。你可以檢查你的瀏覽器是否支持websocket here
  2. 使用不支持websocket的代理。如果您的客戶機和不支持WebSocket的節點服務器之間存在某個服務器(負載平衡器)。
  3. 您正在使用socket.io版本0.9.1/0.9.1-1。此行爲是此版本報告的bug。所以升級到最新的socket.io版本是0.9.14。
  4. 瀏覽器連接被防火牆/阻止。
  5. 代碼相關的問題。