dva-socket.io

0.0.8 • Public • Published

dva-socket.io

Build Status Coverage Status NPM downloads FOSSA Status

A socket.io plugin for dva dva or Redux.

Usage

// 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);
      },
    },
  ],
}));

Api

createSocket(url, options, rules)

  • @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 name
    • value: Function as a listen handle function
      • @params data: Server Push Value
      • @params dispatch: Redux dispatch Function
    • emit: Object | Array
      • key: String as a listen event name
      • value: Object as an Object { evaluate, data }
        • evaluate: Function as a validate function, only if evaluate return true, it will emit a key event with data
          • @params action: Redux dispatched Action
          • @params dispatch: Redux dispatch Function
        • data: Function | Value as a emit data provider
          • @params action: Server Push Value
    • asyncs: Array
      • evaluate: Function as a validate function, only if evaluate return true, it will call request
        • @params action: Redux dispatched Action
        • @params dispatch: Redux dispatch Function
      • request: Async Function as async request service
        • @params action: Redux dispatched Action
        • @params dispatch: Redux dispatch Function
  • @return DVA PLUGIN

License

FOSSA Status

Readme

Keywords

Package Sidebar

Install

npm i dva-socket.io

Weekly Downloads

8

Version

0.0.8

License

MIT

Unpacked Size

28.6 kB

Total Files

15

Last publish

Collaborators

  • uniquecolesmith