2016-04-02 3 views
1

Как следует инициализировать сокет один раз и передавать приложение React/Flux? Должен ли быть только один объект сокета для приложения? Должен ли он быть инициализирован в компоненте, а затем передан в действия, а затем в хранилище?Как подключить сокет в Flux?

+1

На мой взгляд, каждый клиент имеет только один сокет для связи с сервером, поэтому должен быть один одноэлементный класс, который управляет инициализацией сокета. Событие 'emit' должно вызываться в Store или Action, и вы должны иметь WebAPI для приема данных из' on', а затем вызывать действия. Фактически, сосредоточение внимания на данных, поступающих, более важно, чем данные, выходящие в архитектуре Flux. –

+0

@PhiNguyen Можете ли вы привести пример того, как вы должны инициализировать сокет? (не с ecma6 пожалуйста) –

ответ

0

Это от https://github.com/calitek/ReactPatterns React.14/ReFluxWebSocket.

import Actions from '../flux/Actions'; 
 

 
module.exports = { 
 
    socket: {}, 
 
    init() { 
 
    this.socket = new Primus(); 
 
    this.socket.on('server:GotData', this.gotData); 
 
    Actions.apiInitDone(); 
 
    }, 
 
    getData() { this.socket.send('client:GetData', {}); }, 
 
    gotData(data) { Actions.gotData1(data); Actions.gotData2(data); Actions.gotData3(data); }, 
 
    setData(data) { this.socket.send('client:SetData', data); }, 
 
};

Что я могу сделать, это вызвать функцию инициализации, а затем пусть триггер apiInitDone действии начальной загрузки данных.

Смежные вопросы