2014-05-09 39 views
0

我是新的燼,我試圖做一個websocket實時從我的golang服務器接收JSON數據,我的代碼的問題是,它似乎並不正在讀取我創建的適配器,因此我的套接字未連接到服務器。我認爲我的代碼在application.js或index.html中缺少一些東西,這將允許我訪問我的適配器並使用它的方法! 這是我的application.js:燼沒有訪問websocketAdapter

App = Ember.Application.create({ 
    LOG_TRANSITIONS: true 

}) 
/******************************* Post Template **************************************/ 

//Define a route for the template "post" 
App.Router.map(function() { 
    this.route("post", { path: "/post" }); 

}); 

App.PostsRoute = Ember.Route.extend({ 
    model: function() { 
    return this.store.find("posts"); 
    console.log(post); 
    } 
}) 

//Post Model 
App.Post = DS.Model.extend({ 
    name: DS.attr('string'), 
    number: DS.attr('string') 
}); 


/**************************** websocket mixin ************************************/ 

App.WebSocketHandler = Ember.Object.extend({ 
    uri: 'ws://localhost:8081/', 
    //ws: undefined 

    initialize: function() { 
    // this.ws = new WebSocket(this.uri); 
    var ws = new WebSocket(uri); 

    // callbacks 
    this.ws.onopen = function() { 
     console.log('Connection established /all'); 
    }; 
    this.ws.onclone = function() { 
     console.log('Connection closed /' + 'all'); 
    }; 
    this.ws.onmessage = function(data) { 
     DS.get('defaultStore').load(App.Post, data); //Simply load your json in the store. 
    }; 

    this._super(); 
    } 
}); 

/************************* websocket Adapter ********************************************/ 

DS.SocketAdapter = DS.RESTAdapter.extend({ 
    socket: undefined, 


init: function(){ 

    this.socket = new App.WebSocketHandler(); 
    this._super(); 
    }, 

    find: function (store, type, id) { 
    // empty block 
     console.log('find'); 
    }, 

    findAll: function (store, type) { 
    // empty block 
    console.log('findAll'); 
    }, 

    createRecord: function(store, type, record) { 
    // code not relevant 
    console.log('createRecord'); 
    } 
}); 



App.ApplicationAdapter = DS.SocketAdapter; 

// Use the adapter in the store 

App.Store = DS.Store.extend({ 
    revision: 12, 
    adapter: 'SocketAdapter' 
}); 

和我的index.html:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" 
     "http://www.w3.org/TR/html4/strict.dtd"> 
<html lang="en"> 
<head> 
    <title>Ember.js Example Application</title> 

    <script src="js/libs/jquery-1.10.2.js"></script> 
    <script src="js/libs/handlebars-1.1.2.js"></script> 
    <script src="js/libs/ember-1.5.1.js"></script> 
    <script src="js/libs/Ember_Data.js"></script> 
    <script src="js/application.js"></script> 
    <script src="js/router.js"></script> 
    <script src="js/models/model.js"></script> 

</head> 
<body> 
<h1>Bonjour </h1> 


<script type="text/x-handlebars"> 
    Hello, {{firstName}} {{lastName}}<br/> 

    <nav> 
    {{#link-to 'post'}}Post{{/link-to}} 
    </nav> 

    <div> 
     {{outlet}} 
    </div> 

</script> 


<script type="text/x-handlebars" data-template-name="index"> 
    <h2>My Wrappers</h2> 
    <ul> 
    {{#each post in model}} 
     <li>{{post.number}}</li> 

    {{/each}} 
    </ul> 
    </script></p> 


    <script type="text/x-handlebars" data-template-name="post"> 
    <ul> 
     {{#each post in model}} 
      <li>Wrapper Name: {{post.name}}</li> 
      <li>Wrapper Number: {{post.number}}</li> 
     {{/each}} 
    </ul> 
    </script> 


<script type="text/javascript"> 

</script> 


</head> 
<body> 
</body> 
</html> 

回答

0

您在代碼中有一些錯誤。

1)Ember Object使用自己的創建方法。

this.socket = new App.WebSocketHandler(); 
// change to 
this.socket = App.WebSocketHandler.create({}); 

2)你的路由和路由模板未正確命名帖子

this.route(「posts」,{path:「/ posts」});

http://emberjs.jsbin.com/qixur/1/edit

+0

謝謝ppcano,我固定的錯誤,但它不能解決問題,應用程序不能連接到服務器,在那裏,我可以添加到連接到服務器上的任何東西嗎? – Farah