2017-05-01 1 views
0

私はember-simple-auth-tokenからトークンを取得し、URLを使用し、ActionCableとの接続に使用してみてください下回っ:WebSocketでember-simple-auth-tokenのトークンを取得するにはどうすればよいですか?私の実装では

... 

export default Route.extend({ 
    store: service(), 
    currentUser: service(), 
    session: service(), 
    cable: service(), 

    setupConsumer: on('init', function() { 
    let token = this.get('session.data.authenticated.jwt'); 
    let consumer = this.get('cable') 
     .createConsumer(`wss://api.${config.APP.host}/cable?token=${token}`); 

    let channelMixin = Mixin.create({ 
     received(data) { 
     this.get('store').pushPayload(data); 
     } 
    }); 

    consumer.subscriptions.create({ 
     channel: 'ChatroomsChannel' 
    }, channelMixin); 
    }), 

    ... 
}); 

これは最初のリクエストでのみ動作します。私はこれをクッキーに保存する必要がありますか?ありがとう。

答えて

1

次のコードは私の問題を解決します

import Route from 'ember-route'; 
import service from 'ember-service/inject'; 
import Mixin from 'ember-metal/mixin'; 
import config from 'apollo-enterprise/config/environment'; 

export default Route.extend({ 
    session: service(), 
    cable: service(), 

    afterModel(model) { 
    this.get('session.store').restore().then((data) => { 
     let token = data.authenticated.jwt; 
     let consumer = this.get('cable') 
     .createConsumer(`wss://api.${config.APP.host}/cable?token=${token}`); 

     let channelMixin = Mixin.create({ 
     store: service(), 

     received(data) { 
      this.get('store').pushPayload(data); 
     } 
     }); 

     consumer.subscriptions.create({ 
     channel: 'MessagesChannel', 
     chatroom_id: model.id 
     }, channelMixin); 
    }); 
    }, 

    setupController(controller) { 
    this._super(...arguments); 

    controller.set('message', {}); 
    }, 

    actions: { 
    sendMessage(params) { 
     let chatroom = this.controller.get('model'); 
     let message = this.get('store').createRecord('message', params); 

     message.set('chatroom', chatroom); 
     message.save().then(() => { 
     this.controller.set('message', {}); 
     }); 
    } 
    } 
}); 
関連する問題