Advertisement
Guest User

Untitled

a guest
Nov 20th, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import * as types from '../types';
  2. import {
  3.   login, change_video, end_video, wait_for_the_end,
  4.   answer, update_user, update_round, remove_user,
  5.   reset_playlist
  6. } from '../actions'
  7.  
  8. import { browserHistory } from 'react-router'
  9. import { normalize } from 'normalizr';
  10. import { schemaUser } from  '../schemas';
  11.  
  12. var io = require('socket.io-client');
  13.  
  14. const socketMiddleware = (function(){
  15.   var socket = null;
  16.   var serverUrl = 'http://localhost:8080/';
  17.  
  18.   return store => next => action => {
  19.     switch(action.type) {
  20.       case types.SOCKET_CONNECT:
  21.         console.log("connecting to socket")
  22.         socket = io.connect(serverUrl);
  23.  
  24.         socket.on('message', function(message) {
  25.           console.log('[SERV] ' + message);
  26.         });
  27.  
  28.         socket.on('login_success', (user) => {
  29.           const normalizedUser = normalize(user, schemaUser);
  30.  
  31.           console.log("Login success !");
  32.           store.dispatch(login(normalizedUser));
  33.           browserHistory.push('/ingame');
  34.  
  35.           socket.on('change_video', (video) => {
  36.             console.log("Playing " + video.title + " by " + video.artist);
  37.             store.dispatch(change_video(video));
  38.           })
  39.  
  40.           socket.on('end_video', (currVideo) => {
  41.             console.log("Ending video ");
  42.             store.dispatch(end_video(currVideo));
  43.           })
  44.  
  45.           socket.on('wait_for_the_end', () => {
  46.             console.log("wait for the end !");
  47.             store.dispatch(wait_for_the_end());
  48.           })
  49.  
  50.           socket.on('update_round', (round) => {
  51.             console.log("update round");
  52.             store.dispatch(update_round(round));
  53.           })
  54.  
  55.           socket.on('update_all_users', (users) => {
  56.             console.log("Update all users", users)
  57.             for (var user of users) {
  58.               var normalizedUser = normalize(user, schemaUser);
  59.               store.dispatch(update_user(normalizedUser));
  60.             }
  61.           })
  62.  
  63.           socket.on('remove_user', (userId) => {
  64.             console.log("Removing user by id ", userId);
  65.             store.dispatch(remove_user(userId));
  66.           })
  67.  
  68.           socket.on('answer', (result) => {
  69.             store.dispatch(answer(result));
  70.           })
  71.  
  72.           socket.on('reset_playlist', () => {
  73.             store.dispatch(reset_playlist());
  74.           })
  75.         });
  76.  
  77.         socket.on('login_failed', (message) => {
  78.           console.log("Login failed : " + message)
  79.         });
  80.       break;
  81.  
  82.       case types.SOCKET_EMIT:
  83.         if (socket != null) {
  84.           console.log("[socket] emitting message");
  85.           socket.emit("message", action.message);
  86.         }
  87.       break;
  88.  
  89.       case types.SOCKET_LOGIN:
  90.         if (socket != null) {
  91.           console.log("[socket] login with " + action.pseudo);
  92.  
  93.           socket.emit("login", {
  94.             'pseudo': action.pseudo
  95.           });
  96.         }
  97.       break;
  98.  
  99.       case types.SOCKET_ANSWER:
  100.         if (socket != null) {
  101.           console.log("[socket] answering with " + action.val);
  102.  
  103.           socket.emit("answer", action.val);
  104.         }
  105.       break;
  106.  
  107.       default:
  108.         return next(action);
  109.     }
  110.   }
  111.  
  112. })();
  113.  
  114. export default socketMiddleware
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement