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