Dva: рдХреНрдпрд╛ рд╕рджрд╕реНрдпрддрд╛рдПрдБ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рдпрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЬреЛрдбрд╝ рд╕рдХрддреА рд╣реИрдВ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 19 рдЕрдХреНрддреВре░ 2016  ┬╖  17рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dvajs/dva

рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рд╡рд░реНрддрдорд╛рди рд╕рдордп, рд╕рд░реНрд╡рд░ рдХрд╛ рд╡реЗрдмрд╕реЛрдХреЗрдЯ рдХрдиреЗрдХреНрд╢рди, рдХреАрдмреЛрд░реНрдб рдЗрдирдкреБрдЯ, рдЬрд┐рдпреЛрд▓реЛрдХреЗрд╢рди рдкрд░рд┐рд╡рд░реНрддрди, рдЗрддрд┐рд╣рд╛рд╕ рд░реВрдЯрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдЖрджрд┐ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЖрдк рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕реЗрдЯрдЕрдк рдФрд░ keyEvent рдХрд╣рд╛рдВ рд╕реЗ рдЖрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реИ рдпрджрд┐ websocket рдпрд╛ рдХреБрдЫ рдФрд░ рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╕реЙрдХреЗрдЯ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд╕рд┐рд░реНрдл рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдПред

// model

import * as service from '../services/socket';

subscriptions: {
    socket({dispatch}){ // socketчЫ╕хЕ│
        return service.listen(data => {
            switch (data.type) {
                case 'connect':
                    if (data.state === 'success') {
                        dispatch({
                            type: 'connectSuccess'
                        })
                    } else {
                        dispatch({
                            type: 'connectFail'
                        })
                    }
                    break;
                case 'welcome':
                    dispatch({
                        type: 'welcome'
                    });
                    break;
            }
        })
    }
},

// services

import io from 'socket.io-client';

let socket = '';

export function listen(action) {
    if (socket === '') {
        try {
            socket = io("localhost:3000");
            action({
                type: 'connect',
                state: 'success'
            });
        } catch (err) {
            action({
                type: 'connect',
                state: 'fail'
            });
        }
    }
    socket.on('welcome', () => {
        action({
            type: 'welcome'
        })
    })
}

рд╕рднреА 17 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╕реЗрдЯрдЕрдк рдФрд░ рдХреАрдЗрд╡реЗрдВрдЯ рдХреБрдВрдЬреА рд╣реИрдВ, рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдмреЗрдХрд╛рд░ рд╣реИрдВ, рдФрд░ рдХреЛрдИ рднреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЛ рд╕рдХрддреА рд╣реИред

рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЗрд╕ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдпрд╣рд╛рдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд░реЗрд╖рдг рдФрд░ рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рдЧреБрдЬрд░рддрд╛ рд╣реИ, рдФрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рдЧрд░рд╛рдиреА рдХреЛрдб рдХреЛ рдирд┐рдЧрд░рд╛рдиреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддреГрддреАрдп-рдкрдХреНрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдХреНрдпрд╛ рдореЗрд░реА рд╕рдордЭ рд╕рд╣реА рд╣реИ?

рд╣рд╛рдВ, рдпрд╣рд╛рдВ рдХреБрдВрдЬреА/рдорд╛рди рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдкреНрд░рднрд╛рд╡ рдФрд░ рд░реЗрдбреНрдпреВрд╕рд░ рдХреЗ рдЕрдиреБрд░реВрдк рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдмрд╛рдж рдореЗрдВ, рд╕рджрд╕реНрдпрддрд╛ рд░рджреНрджреАрдХрд░рдг рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдореИрдВ рд╕рдордЭ рдЧрдпрд╛ рдЖрдкрдХрд╛ рдзрдиреНрдпрд╡рд╛рджред
рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рдЪрд░реНрдЪрд╛ рдХрд╛ рдЕрд░реНрде рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ, рдЖрдкрдХреЛ рдореЗрд░реЗ рдЬреИрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ :)

рд╕рджрд╕реНрдпрддрд╛ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рдХреА рд╕рджрд╕реНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд╛рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИред рдлрд┐рд░ рдкреНрд░реЗрд╖рдг рдФрд░ рдЗрддрд┐рд╣рд╛рд╕ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕рджрд╕реНрдпрддрд╛ рдпрд╛ рдирд┐рдЧрд░рд╛рдиреА рдХреИрд╕реЗ рдХрд░реЗрдВ, рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддреГрддреАрдп-рдкрдХреНрд╖ рд╡рд░реНрдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдХреНрдпрд╛ рд╡рд╣ рд╕рдордЭ рд╣реИ? рдкреНрд░реЗрд╖рдг рд░реЗрдбрдХреНрд╕ рдХреА рджреБрдХрд╛рди рдореЗрдВ рдкреНрд░реЗрд╖рдг рд╣реИ, рдФрд░ рдЗрддрд┐рд╣рд╛рд╕ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд░рд╛рдЙрдЯрд░ рдореЗрдВ рдЗрддрд┐рд╣рд╛рд╕ рд╣реИ, рдХреНрдпрд╛ рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ?

@ roc2539 рд╣рд╛рдБред

рдХреНрдпрд╛ рдореИрдВ рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди рдореЗрдВ рд╕реЗрдЯрдЕрдк рдореЗрдВ рд╕реНрдЯреЗрдЯ рдпрд╛ рдкреНрд░реЙрдкреНрд╕ рдХреА рд╕рд╛рдордЧреНрд░реА рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

@gzbigegg рдирд╣реАрдВ, рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдВ рдФрд░ рдкреНрд░рднрд╛рд╡ рдХреЛ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рджреЗрдВред

subscriptions: {
    setup ({ dispatch }) {
      dispatch({ type: 'query' })
    }
}

рджреЛ рдкреНрд░рд╢реНрди рд╣реИрдВред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рд╕рд╣реА рд╣реИ рдпрд╛ рдирд╣реАрдВред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдПрд▓реНрдо рдХрднреА рднреА рдЙрдирдХреЗ рд╕рдВрдкрд░реНрдХ рдореЗрдВ рдирд╣реАрдВ рд░рд╣рд╛, рдФрд░ рдореИрдВ рд╕рджрд╕реНрдпрддрд╛ рдХреЛ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рд╕рдордЭрддрд╛ред

  1. рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рдЧреБрдЬрд░рдиреЗ рдФрд░ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдЕрдВрдЬрд╛рдо рджреЗрдиреЗ рдХреЗ рдмрд╛рджредрд╕реБрдиреЛ, рдорд╛рд░реНрдЧ рдмрджрд▓рдиреЗ рдкрд░ рдпрд╣ рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╕рдордЭ рд╕рд╣реА рд╣реИ рдпрд╛ рдирд╣реАрдВред
  2. рдХреЗрд╡рд▓ рдкреНрд░реЗрд╖рдг рдореЗрдВ рдкрд╛рд╕ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рджрд╕реНрдпрддрд╛рдПрдБ рдХрдм рдЪрд╛рд▓реВ рд╣реЛрдВрдЧреА?

рдореБрдЭреЗ рдХреБрдЫ рд╕рджрд╕реНрдпрддрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ рдЬреИрд╕реЗ websocket

рд╕реЗрдЯрдЕрдк рдореЗрдВ рджреЛ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рдбрд┐рд╕реНрдкреИрдЪ рдХрд░реЗрдВ

рд╕рджрд╕реНрдпрддрд╛ рдкрдВрдЬреАрдХрд░рдг @ roc2539 рдореЗрдВ рдХреЙрд▓рдмреИрдХ рдХреЗ рд╕рдордп рдФрд░ рдЗрдВрдЬреЗрдХреНрд╢рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рд╣реИ

рд╣реИрд╢ рд░реВрдЯ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рд╕реЗрдЯрдЕрдк рдХреАрдмреЛрд░реНрдб рд╕реЗ url рдЗрдирдкреБрдЯ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣рд┐рд╕реНрдЯреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдареАрдХ рд╣реИред

 setup ({ dispatch }) {
      console.log('models-app') // цЙЛхКицФ╣хПШurlхЬ░хЭАя╝Мф╕Нф╝Ъш┐ЫцндцЦ╣ц│Х
      dispatch({ type: 'query' })

    },

рд╕реЙрдХреЗрдЯ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд╕рд┐рд░реНрдл рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдПред

// model

import * as service from '../services/socket';

subscriptions: {
    socket({dispatch}){ // socketчЫ╕хЕ│
        return service.listen(data => {
            switch (data.type) {
                case 'connect':
                    if (data.state === 'success') {
                        dispatch({
                            type: 'connectSuccess'
                        })
                    } else {
                        dispatch({
                            type: 'connectFail'
                        })
                    }
                    break;
                case 'welcome':
                    dispatch({
                        type: 'welcome'
                    });
                    break;
            }
        })
    }
},

// services

import io from 'socket.io-client';

let socket = '';

export function listen(action) {
    if (socket === '') {
        try {
            socket = io("localhost:3000");
            action({
                type: 'connect',
                state: 'success'
            });
        } catch (err) {
            action({
                type: 'connect',
                state: 'fail'
            });
        }
    }
    socket.on('welcome', () => {
        action({
            type: 'welcome'
        })
    })
}

рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рд╕рджрд╕реНрдпрддрд╛ рдХреЛ рдХреИрд╕реЗ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдореВрд▓ рд░реВрдк рд╕реЗ, рдпрд╣ рд╕рднреА рдПрдХ рдмрд╛рд░ рдкреНрд░рд╛рд░рдВрдн рд╣реЛрдиреЗ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рджрд╕реНрдпрддрд╛ рдХреЗрд╡рд▓ рдкреНрд░реЗрд╖рдг рдФрд░ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ

рд╕рджрд╕реНрдпрддрд╛: {
рд╕реЗрдЯрдЕрдк ({рдкреНрд░реЗрд╖рдг}) {
рдкреНрд░реЗрд╖рдг ({рдкреНрд░рдХрд╛рд░: 'рдХреНрд╡реЗрд░реА'})
}
} рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд░реЗрд╖рдг рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рд╣реИ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рджрд╕реНрдпрддрд╛ рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЕрдЪрд╛рдирдХ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

sorrycc picture sorrycc  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

seamys picture seamys  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

oldfeel picture oldfeel  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ufohjl picture ufohjl  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zouyan532 picture zouyan532  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ