Advertisement
tabvn

Untitled

Jul 16th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import io from 'socket.io-client';
  2. import {Subject} from 'rxjs/Subject';
  3.  
  4. import {ADD_MESSAGE} from './message';
  5. const initialState = {
  6.     socket: null,
  7.     io: io,
  8.     onReceiveMessage: new Subject()
  9. };
  10.  
  11. export const CONNECT_SOCKET = '/socket/connect';
  12. export const DISCONNECT_SOCKET = '/socket/disconnect';
  13.  
  14. export default (state = initialState, action = {}) => {
  15.  
  16.     switch (action.type) {
  17.  
  18.  
  19.         case CONNECT_SOCKET:
  20.  
  21.             const socket = action.payload;
  22.             const dispatch = action.dispatch;
  23.  
  24.  
  25.             socket.on("/message/POST", (data) => {
  26.  
  27.                 dispatch({
  28.                     type: ADD_MESSAGE,
  29.                     payload: data
  30.                 });
  31.  
  32.                 state.onReceiveMessage.next(data);
  33.             });
  34.  
  35.             return {
  36.                 ...state,
  37.                 socket: socket,
  38.             };
  39.  
  40.         case DISCONNECT_SOCKET:
  41.  
  42.             socketDisconnect(state.socket);
  43.  
  44.             return {
  45.                 ...state,
  46.                 socket: null
  47.             };
  48.  
  49.         default:
  50.             return state;
  51.     }
  52. }
  53.  
  54. export const socket_connect = (token) => {
  55.  
  56.     return dispatch => {
  57.  
  58.         dispatch({
  59.             type: token ? CONNECT_SOCKET : DISCONNECT_SOCKET,
  60.             payload: token,
  61.         })
  62.  
  63.     }
  64. };
  65.  
  66. export const socketDisconnect = (socket) => {
  67.     if (socket) {
  68.         socket.disconnect();
  69.     }
  70. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement