我是 Ruby 和 Sinatra 的新手,我正在尝试使用它设置一个简单的 HTML5 服务器发送事件,下面的代码在 Chrome 开发人员构建中运行良好,但在 Windows7 和 OSX 上的非开发人员构建和 Safari 中失败。
浏览器控制台中的错误消息是“加载资源失败:已取消”
var source = new EventSource('pull');
source.addEventListener('message', function(e) {
console.log(e.data);
}, false);
source.addEventListener('open', function(e) {
// Conn open
}, false);
source.addEventListener('error', function(e) {
if (e.eventPhase == EventSource.CLOSED) {
// Connection was closed.
}
}, false);
使用以下 Sinatra 路线
get '/pull' do
content_type 'text/event-stream'
newevent = false
response = "data: "+newevent.inspect+" \n\n"
end
我用 JSP 和 Tomcat 尝试过类似的服务器端代码,它在所有浏览器上都能正常工作。
关于 Sinatra,我需要了解什么?谢谢!