在模型的ember指南中,它说(1):
Ember Data还可以与socket.io,Firebase或WebSockets等流媒体API配合使用。您可以打开服务器的套接字,并在记录发生时将更改推送到商店。
我尝试编写一个使用websocket的自定义适配器但是我没有走得太远。我在任何地方找不到任何有用的例子。
这是我完全未完成的原型:
DS.WSAdapter = DS.Adapter.extend(Ember.Evented, {
websocket: undefined,
init: function () {
if(this.websocket === undefined)
{
this.websocket = new WebSocket('ws://localhost:8887');
this.websocket.onopen = function(e) {
console.log("Connection established!");
};
this.websocket.onmessage = function(e) {
// What to do here?
};
}
this._loadData();
},
//....
请somone请帮我使用websocket适配器?
我的主要问题是,我不知道websocket.onmessage()
执行时该怎么做。我甚至无法访问商店(使用DS.get('defaultStore')
)或任何其他
答案 0 :(得分:1)
我没有直接使用Ember中的套接字的经验,但是我最近完成了一个Ember Data + Firebase适配器,它应该遵循非常相似的方法。
你至少应该能够将它作为灵感来使用:
https://github.com/sandersonet/ember-data-firebase
Firebase确实从下面的套接字提供了额外的抽象层,但方法非常相似。
答案 1 :(得分:0)
某些应用程序可能希望在商店中添加或更新记录 没有通过store.find请求记录。为了实现这一点 可以使用DS.Store的push,pushPayload或更新方法。这是 对于具有通道的Web应用程序(例如SSE或Web)非常有用 套接字)通知后端的新记录或更新记录。
基本上,您需要对在onmessage
挂钩中收到的数据进行反序列化,并使用store.push('model', record)
或其他方法将新对象推送到数据存储。