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

Ember.js - Updating a model via Websocket Stream

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

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

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

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

实际上非常简单 - 只需确保您设置了以下内容:

  • 您希望您的 websocket 将 json 数据发送到 ember,使用与 json 相同的格式(例如 json:ap)
  • 当您在 ember 端建立 websocket 连接时,您需要一个事件处理程序来处理收到的消息。
  • 该事件处理程序将使用 store.pushPayload 到 add/update 商店中的模型(这意味着您的 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;
}