Ember JS中的服务器发送事件

时间:2014-06-29 08:45:40

标签: javascript ember.js server-sent-events

我有一个应用程序,在点击链接时,浏览器需要在服务器上触发某些内容并且客户端应该获得它的进展。 SSE是一个很好的候选人,但我无法在余烬中解决这个问题(我正在学习)。

我尝试使用模板execute

<script type="text/x-handlebars" data-template-name="execute">
    <script>
       if(typeof(EventSource)!=="undefined") {
          var source=new EventSource("/execute/flow");
          source.onmessage=function(event) {
              if(event.data == 'end') {
                source.close();
              }else{
                document.getElementById("flow_result").innerHTML+= event.data + "<br>";
              }
          };
       } else {
          document.getElementById("flow_result").innerHTML="Sorry, your browser does not support server-sent events...";
       }
    }
    <script>
<script>

页面上某处有一个使用{{#link-to 'execute'}}的链接,可以触发此模板。但不知何故,这个SSE javascript根本没有执行。

问题:

1)我做错了什么? (我怀疑我不应该把javascript代码放在模板中) 2)使用带有ember js的SSE有什么好的例子吗?

1 个答案:

答案 0 :(得分:4)

不要在模板中传递代码。 在控制器和应用程序的路径中处理您喜欢的任何操作。 对于sse,您可以执行以下操作:

App.ApplicationController = Ember.Controller.extend({
  init: function() {
    var eventSource;
    eventSource = new EventSource(your-event-source);
    return eventSource.addEventListener(your-event-to-listen, function(e) {
      var data;
      return data = $.parseJSON(e.data);
      //Do whatever else you want in here with your data
    });
  }
});