我有一个Node.js游戏服务器,它使用socket.io每50毫秒向客户端发送一次更新(仅限websockets,禁用长轮询)。这通常可以很好地工作 - 服务器每50毫秒发出一次,客户端接收相隔50毫秒的更新。
我最近注意到在Chrome中(似乎这并不会在任何其他浏览器中发生...... Safari,Opera,Firefox等)更新将不再每50毫秒接收客户端正在向服务器发送消息。如果客户端频繁向服务器发送消息(每秒10次以上),则客户端一次不会收到约700毫秒的服务器更新,然后突然接收所有14个错过的消息(相隔约1毫秒)。例如:
服务器发送时间戳:
0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700
正常收货时间戳:
0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700
客户端发布时的时间戳:
0, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710
同样,这不是正常行为。客户端应该有足够的时间每50毫秒接收和处理一次更新。我的计算机是一台高端计算机,可以毫不费力地保持这一点,而且据我所知,在我测试的其他所有浏览器上都能正常工作。
有什么想法吗?