我有使用node.js用express和socket.io编写的这个web应用程序,该应用程序在localhost上运行良好,但当我推送到我的ec2服务器时,它连接20秒然后断开连接,然后再连接等...
将节点控制台上的错误视为
warn - websocket connection invalid
info - transport end
服务器
app = express()
server = http.createServer(app)
io = require('socket.io').listen(server)
客户端
socket = io.connect()
我知道问题不在于我的代码,因为我在localhost上完全测试了web应用程序,所以唯一的问题是这个代码在哪里运行,这是我的ec2实例?
答案 0 :(得分:4)
可能有很多可能的原因导致此错误:
答案 1 :(得分:2)
确保您在ec2上使用最新版本的node,express和socket.io。另外,在本地计算机和ec2实例上提供有关当前使用版本的一些数据。
答案 2 :(得分:1)
在本地计算机上运行时,您无需处理网络延迟,NAT问题或防火墙。在EC2上运行你就拥有了所有这些。
Web套接字相对较新且不稳定。首先,请确保您运行的是最新版本(并让我们知道它们是什么)。也许本地计算机上安装的socket.io版本与EC2服务器中安装的版本不同。
答案 3 :(得分:1)
如果在失去连接之前的20秒内没有活动,则有一种可能性是保持活动设置得太低。
有关类似问题,请参阅https://groups.google.com/forum/?fromgroups=#!topic/socket_io/RUv70BguZ-U。解决方案是使用心跳来保持连接打开。
如果你还没有使用它们,请更多关于socket.io心跳: Advantage/disadvantage of using socketio heartbeats