| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- import {APP_SERVER} from "@constants/app";
- import {connectServer, disconnectServer, onDisconnect, sendToServer} from "@features/socketSlice";
- import {reqGameInfo} from "@features/api";
- import {updatePayFinish} from "@features/paySlice";
- import {trackEvent} from "../../tracking/TrackAll";
- import {toast} from "react-toastify";
- import {useLocation} from "react-router-dom";
- import {updateServerKick} from "@features/mainSlice";
- const roomName=APP_SERVER.ROOM_HALL;
- const serverUrl=APP_SERVER.SERVER_URL;
- const i18n=global.i18n;
- //信息处理
- const __playground_message_types=(message,dispatch)=>{
- }
- const handlePayFinish=(message,dispatch)=>{
- dispatch(reqGameInfo());
- dispatch(updatePayFinish(message));
- let {data}=message;
- if (data&&data.PayNum>=200)global.showDropCoins();
- }
- const roger=(message,dispatch)=>{
- // console.log(message);
- if (message){
- let {cmd}=message;
- switch (cmd){
- case "pay_finish": {
- //充值完成 message={cmd:...,data:{Golds:12.xx,PayNum:10}}
- handlePayFinish(message, dispatch)
- //顺带处理打点
- let {data}=message;
- if(!!data&&!!data.event){
- trackEvent("pay",data.params);
- }
- break;
- }
- case "call_client":{
- //调用客户端接口,比如将进入游戏的客户端踢出返回,强制登出等 message={cmd:"",data:{}}
- if(!!message.data&&!!message.data.type){
- let {data}=message;
- switch(message.data.type){
- case "track":{
- trackEvent(data.event,data.params)
- break;
- }
- }
- }
- break;
- }
- //踢
- case "kick":{
- // send("operate",{cmd:"kick",data:{reason:"hall.other_online"}});
- if(!!message.data){
- let {data}=message;
- let reason=data.reason;
- if (reason!=null){
- toast.error(i18n.t(reason));
- }
- }
- dispatch(updateServerKick(1));
- }
- }
- }
- }
- const chat=(message,dispatch)=>{
- console.log(message);
- }
- //信息处理
- const messageHandler={
- __playground_message_types,
- roger,
- chat
- }
- const onHallConnect=()=>{
- return (dispatch, getState) => {
- dispatch(hallSendReg());
- dispatch(hallSendState());
- // dispatch(hallSendState(0));
- // dispatch(hallSendChat("123456"));
- // setInterval(()=>{
- // dispatch(hallSendChat("test"));
- // },1000);
- }
- }
- const send=(type,message,dispatch)=>{
- dispatch(sendToServer({
- roomName,
- type,
- message
- }));
- }
- export const onHallMessage=(type,message)=>{
- return (dispatch, getState) => {
- let handler=messageHandler[type];
- if (handler!=null){
- handler(message,dispatch);
- }
- }
- }
- export const connectHall=(hallServerUrl='')=>{
- if (hallServerUrl==='')hallServerUrl=serverUrl;
- return connectServer({
- roomName:roomName,
- serverUrl:hallServerUrl,
- messageCB:onHallMessage,
- onRoomConnect:onHallConnect
- });
- }
- export const disconnectHall=()=>{
- return disconnectServer(roomName);
- }
- export const hallSendReg=()=>{
- return (dispatch, getState) => {
- console.log("login user");
- let main=getState().main;
- let userInfo=main.userInfo;
- let {UserID,GlobalUID,FaceID,NickName}=userInfo;
- send("id",{UserID,GlobalUID,FaceID,NickName},dispatch);
- }
- }
- export const hallSendChat=(message)=>{
- return (dispatch, getState) => {
- send("chat",message,dispatch);
- }
- }
- export const hallSendState=()=>{
- return (dispatch, getState) => {
- let main=getState().main;
- let gameID=main.gameID;
- let message={in_game:gameID};
- send("state",message,dispatch);
- }
- }
|