代码之家  ›  专栏  ›  技术社区  ›  Joshua Jenkins

余烬js-通过Websocket流更新模型

  •  0
  • Joshua Jenkins  · 技术社区  · 7 年前

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

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

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

    1 回复  |  直到 7 年前
        1
  •  0
  •   NullVoxPopuli    7 年前

    其实很简单-只要确保你有这些设置:

    • 您希望您的websocket使用相同的json格式(例如json:ap)将json数据发送到ember
    • 当您在事物的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;
    }