gpt4 book ai didi

sockets - Ember 和 Socket.io/Websocket

转载 作者:行者123 更新时间:2023-12-03 12:05:24 25 4
gpt4 key购买 nike

我正在尝试从 socket.io websocket 中提取数据的实时流,以 JSON 形式出现。

我试图使用这些人的方法,但没有运气(我收到错误 - “未捕获的 TypeError:无法调用未定义的方法 'load'” - 我自己无法弄清楚):

Socket.IO with Ember and Ember-Data

我的代码:

var socket = io.connect('http://localhost:8007');
socket.on('my_live_stream', function (data) {
store.load(App.Group, data);
});

和更多:
App.Group = DS.Model.extend({
id: DS.attr('string'),
name: DS.attr('string'),
usage: DS.attr('string'),
sunshine: DS.attr('string'),
device_info: DS.attr('string')
});

编辑:JSON 的样子......
{
"group":{
"usage":{
"case1":0,
"case2":0,
"case3":0

},
"sunshine":"00/00/0000",
"id":1010,
"device_info":11.5,
...

我对这里的 Ember 还是很陌生,但我只是想获得 {{name}},{{usage}}。和 {{device_info}} 到我的索引模板。当我将 console.log(data) 添加到套接字代码(以替换 store.load ...)时,我看到了大量的数据流。下一步是什么?

非常感谢!

最佳答案

您引用的问题是使用非常过时的 Ember Data 版本。您几乎应该忽略 10 月之前的任何堆栈溢出。

你想要的新方法是store.push , 在你的情况下, 在你的情况下 store.push('Group', data) .

但是,您的代码中还有另一个问题,即您无权访问该上下文中的存储。通常,您通过 this.store 访问路由和 Controller 内部的存储。 .但是,您不在路由或 Controller 中。如果你愿意,你可以像这样破解商店的访问权限,store = App.__container__.lookup('store:main') ,但这不是 Ember 的方式,可能会导致您出现问题。相反,您可以将其添加到 Application Route 中的一个 Hook 中。 ,您可以访问 this.store .

例如,您可以这样设置:

App.ApplicationRoute = Ember.Route.extend({
activate: function(){
var that = this;
var socket = io.connect('http://localhost:8007');
socket.on('my_live_stream', function (data) {
that.store.push('Group', data.group);
});
})
});

文档: http://emberjs.com/guides/models/pushing-records-into-the-store/

关于sockets - Ember 和 Socket.io/Websocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22770099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com