【问题标题】:Detect when a socket io connection has been changed with ember检测何时使用 ember 更改了套接字 io 连接
【发布时间】:2019-02-14 01:15:09
【问题描述】:

我将 ember 与 socket.io 一起使用,并且我想要一个计算属性来更改套接字 io 连接是连接还是断开。

我正在使用 ember-websockets,这是我尝试过的:

socketIOService: service('socket-io'),
socketRoute:     'http://localhost:8080/',

connected: computed('socketIOService',
function()
{
    console.log('changed!');
    //return (this.get('socketIOService').socketFor(this.get('socketRoute').socket.connected));
}),

startConnection()
{
    this.get('connected');
    const socket = this.socketIOService.socketFor(this.get('socketRoute'));

    socket.on('initialised', this.initialised, this);
},

所以这不起作用,因为我猜测服务没有改变。我希望能够从以下计算机中计算出一个值...

this.socketIOService.socketFor(this.get('socketRoute'));

但我无法在计算属性中获取 sockerFor 属性。

【问题讨论】:

    标签: javascript ember.js socket.io


    【解决方案1】:

    看看readme,我认为您可以使用带有共同计算属性的“打开”和“关闭”事件:

    startConnection()
    {
        const socket = this.socketIOService.socketFor(this.get('socketRoute'));
        socket.on('open', () => { this.set('connected', true); });
        socket.on('close', () => { this.set('connected', false); });
    }
    

    【讨论】:

    • 这不起作用,据我所知,socket.on 只是初始化了一个侦听器,并且没有连接或断开连接的保留名称。
    • @RachelDockter 在示例中来自 ember-websockets repo 它表明有 openclose 事件
    • 那很奇怪,我不知道为什么它对我不起作用
    • 我刚刚尝试了一堆名称,“连接”和“断开连接”似乎正在工作,而不是打开和关闭。谢谢:)
    • @RachelDockter 在查看了源代码后我明白了为什么 - ember-websockets 提供了两种服务,socket-iowebsockets。两者都有socketFor 方法,但它返回不同类型的socket 对象。在您的情况下(socket-io 服务)它是 this,它确实有 connectdisconnect 事件而不是 openclose
    猜你喜欢
    • 1970-01-01
    • 2013-07-22
    • 2016-08-15
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    • 2011-09-18
    • 2011-01-01
    相关资源
    最近更新 更多