Ember.js - 通过Websocket Stream更新模型

时间:2017-10-09 11:12:08

标签: ember.js ember-data

我希望通过websocket流更新我的市场模型。

我有一个拥有众多市场的平台模型。

当用户首次请求模型时,将从后端数据库中检索它。然后我想用websocket数据更新。

如何更新模型中的不同值?我无法弄清楚如何按市场名称过滤hasmany关系然后设置值。也许有一种更简单的方式去做,我没有看到。

1 个答案:

答案 0 :(得分:0)

实际上非常简单 - 只需确保安装好这些东西:

  • 您希望您的websocket将json数据发送到ember,使用相同格式的json(例如json:ap)
  • 当你在ember端建立你的websocket连接时,你会想要一个事件处理程序来处理收到的消息。
  • 该事件处理程序将使用store.pushPayload在商店中添加/更新模型(这意味着您的websocket代码需要访问商店)。

一个例子:

// some controller.js
import Controller from '@ember/controller';
import { action } from 'ember-decorators/object';

import myAwesomeWebSocketStuff from 'lib/websocket';


export default class extends Controller {
  init() {
    const socket = myAwesomeWebSocketStuff(this.store);

    this.set('socket', socket');
  }

  willDestroy() {
    this.get('socket').disconnect();
  }      
}

然后在lib/websocket.js

import SomeWebSocketLibrary from 'some-library';

export default function(store) {
  const socket = new SomeWebSocketLibrary(url);

  socket.connect();
  socket.on('receive', data => store.pushPayload(data));

  return socket;
}