A socket.io plugin for dva dva or Redux.
// Simple Usage
import dva from 'dva';
import createSocket from 'dva-socket.io';
const app = dva();
app.use(createSocket('http://127.0.0.1:8080', null, {
// when server push an server-message event,
// it will dispatch an action use server data,
on: ['server-message'],
emit: [
// when you dispatch an action with type === 'send-message',
// it will emit a client-message event with data('client send a message')
[
'client-message',
(action) => action.type === 'send-message',
'client send a message',
],
],
}));
// Normal Usage (Recommend)
import dva from 'dva';
import createSocket from 'dva-socket.io';
const app = dva();
app.use(createSocket('http://127.0.0.1:8080', null, {
// when server push an server-message event,
// it will dispatch an action use server data,
on: {
'server-message': (data, dispatch, getState) => dispatch(data),
},
emit: {
// when you dispatch an action with type === 'send-message',
// it will emit a client-message event with data('client send a message')
'client-message': {
evaluate: (action, dispatch, getState) => action.type === 'send-message',
data: (action) => 'client send a message',
},
},
}));
// With Async Service
import dva from 'dva';
import createSocket from 'dva-socket.io';
const app = dva();
app.use(createSocket('http://127.0.0.1:8080', null, {
asyncs: [
{
evaluate: (action, dispatch, getState) => true,
request: async (action, dispatch, getState) => {
const data = await = fetch(action.payload.url);
dispatch(data);
},
},
],
}));
- @param
url: String
: socket.io url - @param
options: Object
: socket.io options - @param
rules: Object
: listeners(on), emitters(emit)on: Object | Array
key: String | number
as a listen event namevalue: Function
as a listen handle function- @params
data: Server Push Value
- @params
dispatch: Redux dispatch Function
- @params
emit: Object | Array
key: String
as a listen event namevalue: Object
as an Object { evaluate, data }evaluate: Function
as a validate function, only if evaluate returntrue
, it will emit akey
event withdata
- @params
action: Redux dispatched Action
- @params
dispatch: Redux dispatch Function
- @params
data: Function | Value
as a emit data provider- @params
action: Server Push Value
- @params
asyncs: Array
evaluate: Function
as a validate function, only if evaluate returntrue
, it will callrequest
- @params
action: Redux dispatched Action
- @params
dispatch: Redux dispatch Function
- @params
request: Async Function
as async request service- @params
action: Redux dispatched Action
- @params
dispatch: Redux dispatch Function
- @params
- @return
DVA PLUGIN