我正在考虑在Rails中制作一个国际象棋应用程序,其中需要将移动从服务器异步推送到客户端浏览器(最好是使用websocket)。
然而,从我所做的少量研究来看,Heroku似乎不支持websocket。但是,使用socket.io也有另一种选择,它被配置为使用长轮询而不是websocket。
长时间的轮询是否不足以满足像5分钟闪电战这样的国际象棋游戏的延迟要求?
Heroku-Cedar堆栈支持HTTP流和长轮询:https://devcenter.heroku.com/articles/request-timeout#longpolling_and_streaming_responses
它不支持WebSockets。但是您可以使用像Faye这样的框架,并使用XHR作为传输机制。这似乎有一个项目。请参阅:有可能在Heroku上主持FAYE吗?
如果你想在你的游戏客户端中使用WebSocket,并在Heroku上拥有后端,那么我现在知道的唯一解决方案就是使用Pusher(我为插件工作):https://addons.heroku.com/pusher
一种更接近Websockets的替代方案是服务器发送事件。从服务器到客户端是单向的(您可以继续向客户端->服务器方向发出标准请求)。
Heroku似乎确实支持服务器发送事件,大多数支持Websockets的浏览器也是如此(IE10是不支持的例外)。