一般来说,我对ember.js和客户端开发还很陌生。我当前的设置看起来像这样:
这不是使用诸如socket.io之类的库。(下面的协议示例)
因此,总的来说,这就是我想要实现的目标。我已经编写了一个对象,该对象将在请求时返回一个Promise。由于在开始时需要登录步骤,因此我想在某个地方创建对象,然后在创建时自动登录。
现在我的问题是:
样本登录请求:
要求:
{
"type": "request",
"subtype": "apilogin",
"id": 1234,
"data": {
"username": "<string|null>",
"password": "<string|null>",
"token": "<string|null>"
}
}
回答:
{
"type": "answer",
"subtype": "apilogin",
"id": 1234,
"error": 0,
"errormessage": "",
"data": {
"token": "<string>"
}
}
令牌只是另一种登录方式,在套接字关闭后的15分钟内有效。(要在出现网络错误或类似情况后重新连接)。
由于我从未真正做过这样的事情,所以我有点问题,例如在框架中的位置以及如何访问它们。
我认为这种情况非常适合Ember服务。要分别回答您的问题:
在ember框架中的哪里定义Class?
任何地方都很好。如果使用的是Ember CLI,则可能要将其放在services
目录中。
创建后在哪里创建/存储对象(由于套接字仅在打开套接字时才有效,因此需要为单例)?
Ember容器将为您创建实例。默认情况下,从容器中查找的所有项目都是单例,因此您不必为此担心。
当我需要发送请求时,如何访问对象。
您应该将服务注入所需的类中。摘自我所链接的指南,这会将服务注入到一个类中:
Ember.Component.extend({
// Make sure you name your object SocketService
socket: Ember.inject.service()
});
或者,要将其注入到某个类型的所有类中(例如,将其注入到所有路由中),请使用初始化程序:
application.inject('route', 'socket', 'service:socket');
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句