| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- import {createSlice} from "@reduxjs/toolkit";
- import {APP_SERVER} from "@constants/app";
- import CSClientWrap from "@features/colyseus/CSClientWrap";
- export const Socket=createSlice({
- name: 'socket',
- initialState: {
- clients:{}
- },
- reducers: {
- onConnect:(state, action) => {
- let roomName=action.payload;
- if (roomName!=null){
- state.clients[roomName]={
- isConnected:true,
- message:{}//最后一条消息
- }
- }
- },
- onDisconnect:(state, action) =>{
- let roomName=action.payload;
- let client=state.clients[roomName];
- if (client!=null){
- client.isConnected=false;
- }
- },
- onSend:(state, action) =>{
- },
- onMessage:(state, action) => {
- let {roomName,type,message}=action.payload;
- let client=state.clients[roomName];
- if (client!=null){
- client.message={type,message};
- }
- }
- },
- extraReducers: (builder) => {
- },
- })
- export const {onConnect,onDisconnect,onSend,onMessage} = Socket.actions;
- export default Socket.reducer;
- export const connectServer=({roomName, serverUrl,messageCB=null,onRoomConnect=null,options={}})=>{
- return async (dispatch, getState) => {
- if (CSClientWrap.isConnected())return ;
- let isConnected=await CSClientWrap.connect(roomName,serverUrl,(type,message)=>{
- dispatch(onMessage({roomName,type,message}));
- if (messageCB!=null)dispatch(messageCB(type,message));
- });
- if(isConnected){
- dispatch(onConnect(roomName));
- if (onRoomConnect!=null)dispatch(onRoomConnect());
- }
- }
- }
- export const disconnectServer=(roomName)=>{
- return async (dispatch, getState) => {
- await CSClientWrap.disconnect(roomName);
- dispatch(onDisconnect(roomName));
- }
- }
- export const sendToServer=({roomName,type,message=""})=>{
- return (dispatch)=>{
- CSClientWrap.send(roomName,type,message);
- dispatch(onSend({roomName,type,message}));
- }
- }
- // export const connectHall=()=>{
- // return connectServer({
- // roomName:APP_SERVER.ROOM_HALL,
- // serverUrl:APP_SERVER.SERVER_URL
- // });
- // }
|