18 changed files with 154 additions and 40 deletions
			
			
		| @ -0,0 +1,26 @@ | |||
| 'use strict'; | |||
| 
 | |||
| module.exports = async function factory (app, opts) { | |||
| 
 | |||
|     app.socket.on('connection', async (socket) => { | |||
|         console.info('WEB_SOCKET ' + socket.handshake.query.token + ' 已连接'); | |||
| 
 | |||
|         socket.on('disconnecting', async (reason) => { | |||
|             console.info('WEB_SOCKET ' + socket.handshake.query.token + ' 已断开连接:' + reason); | |||
|         }) | |||
|     }) | |||
| 
 | |||
|     // 使用测试
 | |||
|     // setInterval(async () => {
 | |||
|     //     const { connected } = app.socket.sockets
 | |||
|     //     const roomId = 'ROOM_' + Math.random()
 | |||
|     //     if (connected) {
 | |||
|     //         for (let c in connected) {
 | |||
|     //             connected[c].join(roomId)
 | |||
|     //         }
 | |||
|     //         app.socket.to(roomId).emit('TEST', { someProperty: `【星域 ROOM:${roomId}】呼叫自然选择号!!!`, })
 | |||
|     //     }
 | |||
| 
 | |||
|     //     app.socket.emit('TEST', { someProperty: '【广播】呼叫青铜时代号!!!', })
 | |||
|     // }, 1000)
 | |||
| } | |||
| @ -0,0 +1,9 @@ | |||
| 'use strict'; | |||
| 
 | |||
| import * as global from './global' | |||
| import * as socket from './webSocket'; | |||
| 
 | |||
| export default { | |||
|     ...global, | |||
|     ...socket, | |||
| }; | |||
| @ -0,0 +1,31 @@ | |||
| 'use strict'; | |||
| import io from 'socket.io-client'; | |||
| 
 | |||
| export const INIT_WEB_SOCKET = 'INIT_WEB_SOCKET' | |||
| export function initWebSocket ({ ioUrl, token }) { | |||
|     if (!ioUrl) { | |||
|         ioUrl = localStorage.getItem('apiRoot') | |||
|     } | |||
|     if (!token) { | |||
|         const user = sessionStorage.getItem('user') | |||
|         token = JSON.parse(user).token | |||
|     } | |||
|     if (!ioUrl || !token) { | |||
|         return { | |||
|             type: '', | |||
|         } | |||
|     } | |||
|     return dispatch => { | |||
|         const socket = io(ioUrl, { | |||
|             query: { | |||
|                 token: token | |||
|             } | |||
|         }); | |||
|         dispatch({ | |||
|             type: INIT_WEB_SOCKET, | |||
|             payload: { | |||
|                 socket: socket | |||
|             } | |||
|         }) | |||
|     } | |||
| } | |||
| @ -0,0 +1,21 @@ | |||
| 'use strict'; | |||
| import * as actionTypes from '../actions/webSocket'; | |||
| import Immutable from 'immutable'; | |||
| 
 | |||
| const initState = { | |||
|     socket: null, | |||
| }; | |||
| 
 | |||
| function webSocket (state = initState, action) { | |||
|     const payload = action.payload; | |||
|     switch (action.type) { | |||
|         case actionTypes.INIT_WEB_SOCKET: | |||
|             return Immutable.fromJS(state).merge({ | |||
|                 socket: payload.socket, | |||
|             }).toJS(); | |||
|         default: | |||
|             return state; | |||
|     } | |||
| } | |||
| 
 | |||
| export default webSocket; | |||
					Loading…
					
					
				
		Reference in new issue