diff --git a/src/NetManager/WebSocketClass.ts b/src/Client/Client.ts similarity index 94% rename from src/NetManager/WebSocketClass.ts rename to src/Client/Client.ts index 75f730c..bbce7da 100644 --- a/src/NetManager/WebSocketClass.ts +++ b/src/Client/Client.ts @@ -2,12 +2,12 @@ import _ws from "ws" import { Encoding } from "../Engine/CatanEngine/CSharp/System/Text/Encoding" import { INetResponse } from "../Engine/CatanEngine/NetManagerV2/Core/INetResponse" -import WebSocketServerClass from "./WebSocketServerClass" +import WebSocketServerClass from "../NetManager/WebSocketServerClass" /** - * WebSocket + * Client */ -export default class WebSocketClass { +export default class Client { //#region private @@ -69,7 +69,7 @@ export default class WebSocketClass { console.log(`Client_${this.clientCount} Close connected`) } - /** 發送給所有client */ + /** 發送給client */ public SendClient(req: INetResponse): void { const status = 0 const json: any[] = [req.Method] diff --git a/src/DataReceived/MainControlData.ts b/src/DataReceived/MainControlData.ts index 46217b6..da668f8 100644 --- a/src/DataReceived/MainControlData.ts +++ b/src/DataReceived/MainControlData.ts @@ -1,5 +1,6 @@ -import { INetResponse } from "../Engine/CatanEngine/NetManagerV2/Core/INetResponse" -import WebSocketServerClass from "../NetManager/WebSocketServerClass" +import { INetResponse } from "../Engine/CatanEngine/NetManagerV2/Core/INetResponse"; +import Lobby from "../Lobby/Lobby"; +import WebSocketServerClass from "../NetManager/WebSocketServerClass"; export default class MainControlData { constructor() { @@ -7,11 +8,11 @@ export default class MainControlData { } /** SERVER主動通知 */ - private _serverData(resp: INetResponse): void { - if (resp.IsValid) { - switch (resp.Method) { - case "chat.send": - resp.WS.SendClient(resp) + private _serverData(req: INetResponse): void { + if (req.IsValid) { + switch (req.Method) { + case "lobby.list": + Lobby.GetList(req); // GiftData.Instance?.AddCommonList(resp.Data) break default: diff --git a/src/Engine/CatanEngine/NetManagerV2/Core/INetRequest.ts b/src/Engine/CatanEngine/NetManagerV2/Core/INetRequest.ts index 8ab4f86..602b005 100644 --- a/src/Engine/CatanEngine/NetManagerV2/Core/INetRequest.ts +++ b/src/Engine/CatanEngine/NetManagerV2/Core/INetRequest.ts @@ -7,7 +7,7 @@ export interface INetRequest { Data: TRequest; Result: INetResponse; - SendAsync(): Iterator; + // SendAsync(): Iterator; - Send(); + // Send(); } \ No newline at end of file diff --git a/src/Engine/CatanEngine/NetManagerV2/Core/INetResponse.ts b/src/Engine/CatanEngine/NetManagerV2/Core/INetResponse.ts index 9422414..519a3b1 100644 --- a/src/Engine/CatanEngine/NetManagerV2/Core/INetResponse.ts +++ b/src/Engine/CatanEngine/NetManagerV2/Core/INetResponse.ts @@ -1,9 +1,9 @@ -import WebSocketClass from "../../../../NetManager/WebSocketClass" +import Client from "../../../../Client/Client" export interface INetResponse { readonly Method: string - readonly WS: WebSocketClass + readonly WS: Client readonly Status: number readonly Data: TResponse - readonly IsValid: boolean + readonly IsValid?: boolean } \ No newline at end of file diff --git a/src/Engine/CatanEngine/NetManagerV2/NetConnector.ts b/src/Engine/CatanEngine/NetManagerV2/NetConnector.ts index 912f8a9..92c75a2 100644 --- a/src/Engine/CatanEngine/NetManagerV2/NetConnector.ts +++ b/src/Engine/CatanEngine/NetManagerV2/NetConnector.ts @@ -1,5 +1,3 @@ -import Event from "@/modules/event"; -import * as Define from "@/modules/player/define"; import { BaseEnumerator } from "../CoroutineV2/Core/BaseEnumerator"; import { Action } from "../CSharp/System/Action"; import { Encoding } from "../CSharp/System/Text/Encoding"; @@ -8,8 +6,6 @@ import { INetResponse } from "./Core/INetResponse"; import NetConfig from "./NetConfig"; export class NetConnector { - /** Event */ - public readonly event: Event = new Event(); readonly OnDataReceived: Action> = new Action>(); readonly OnDisconnected: Action = new Action(); readonly OnLoadUIMask: Action = new Action(); @@ -137,7 +133,7 @@ export class NetConnector { // if (CC_DEBUG) { console.debug(`[RPC] ${this._host} Connected.`); // } - this.event.emit(Define.Event.Socket.Connect); + // this.event.emit(Define.Event.Socket.Connect); } private OnWebSocketMessage(e: MessageEvent) { @@ -208,11 +204,11 @@ export class NetConnector { private OnWebSocketClose(e: CloseEvent) { this.WebSocketEnded(); - this.event.emit(Define.Event.Socket.Disconnect); + // this.event.emit(Define.Event.Socket.Disconnect); } private OnWebSocketError(e: CloseEvent) { - this.event.emit(Define.Event.Socket.Error); + // this.event.emit(Define.Event.Socket.Error); } } @@ -221,6 +217,7 @@ const ErrorResponse: INetResponse = { Method: "", Data: {}, IsValid: false, + WS: undefined, }; class WsConnectEnumerator extends BaseEnumerator { diff --git a/src/Engine/CatanEngine/NetManagerV2/NetRequest.ts b/src/Engine/CatanEngine/NetManagerV2/NetRequest.ts index 669342a..ff41d6b 100644 --- a/src/Engine/CatanEngine/NetManagerV2/NetRequest.ts +++ b/src/Engine/CatanEngine/NetManagerV2/NetRequest.ts @@ -1,4 +1,3 @@ -import { VueNetConnector } from "@/assets/VueScript/Net/VueNetConnector"; import { INetRequest } from "./Core/INetRequest"; export abstract class NetRequest implements INetRequest { @@ -11,18 +10,18 @@ export abstract class NetRequest implements INetRequest; - /** - * 在大廳呼叫Cocos會收到SERVER主動通知 - * 在大廳呼叫Cocos會收到SERVER主動通知 - * 在大廳呼叫Cocos會收到SERVER主動通知 - */ - SendAsync(mask: boolean = false): Iterator { - // return NetManager.SendAsync(this, mask); - return VueNetConnector.SendAsync(this, mask); - } + // /** + // * 在大廳呼叫Cocos會收到SERVER主動通知 + // * 在大廳呼叫Cocos會收到SERVER主動通知 + // * 在大廳呼叫Cocos會收到SERVER主動通知 + // */ + // SendAsync(mask: boolean = false): Iterator { + // // return NetManager.SendAsync(this, mask); + // return VueNetConnector.SendAsync(this, mask); + // } - Send() { - // NetManager.Send(this); - VueNetConnector.Send(this); - } + // Send() { + // // NetManager.Send(this); + // VueNetConnector.Send(this); + // } } diff --git a/src/Engine/CatanEngine/NetManagerV2/NetResponse.ts b/src/Engine/CatanEngine/NetManagerV2/NetResponse.ts new file mode 100644 index 0000000..56e0ea2 --- /dev/null +++ b/src/Engine/CatanEngine/NetManagerV2/NetResponse.ts @@ -0,0 +1,28 @@ +import Client from "../../../Client/Client" +import { INetResponse } from "./Core/INetResponse" + +export abstract class NetResponse implements INetResponse { + protected data: any = undefined + protected method: string = "" + protected ws: Client = undefined + protected status: number = undefined + + get Method(): string { + return this.method + } + get WS(): Client { + return this.ws + } + get Status(): number { + return this.status + } + get Data(): any { + return this.data + } + + constructor(ws: Client, data: any, status: number = 0) { + this.ws = ws + this.data = data + this.status = status + } +} diff --git a/src/GuessWhoIAmClass.ts b/src/GuessWhoIAmClass.ts deleted file mode 100644 index ef919b7..0000000 --- a/src/GuessWhoIAmClass.ts +++ /dev/null @@ -1,30 +0,0 @@ -import MainControlData from "./DataReceived/MainControlData" -import WebSocketServerClass from "./NetManager/WebSocketServerClass" - -/** - * GuessWhoIAm - */ -export default class GuessWhoIAmClass { - - //#region private - - private clientCount: number = 0 - - //#endregion - - //#region Lifecycle - - /** - * - */ - constructor() { - new WebSocketServerClass() - new MainControlData() - } - - //#endregion - - //#region Custom - - //#endregion -} diff --git a/src/Lobby/Lobby.ts b/src/Lobby/Lobby.ts new file mode 100644 index 0000000..1b3d988 --- /dev/null +++ b/src/Lobby/Lobby.ts @@ -0,0 +1,42 @@ +import { LobbyListRequest } from "../define/Request/LobbyRequest"; +import { INetResponse } from "../Engine/CatanEngine/NetManagerV2/Core/INetResponse"; +import Room from "../Room/Room"; + +/** + * Lobby + */ +export default class Lobby { + + //#region private + + private static list: Room[] = [] + + //#endregion + + //#region Custom + + /** GetList */ + public static GetList(req: INetResponse): void { + let resp: LobbyListRequest = new LobbyListRequest(req.WS, this.list, 0) + req.WS.SendClient(resp) + } + + /** Create */ + public static Create(req: INetResponse): void { + let room = new Room() + this.list.push(room) + // + } + + /** Join */ + public static Join(req: INetResponse): void { + // + } + + /** Exit */ + public static Exit(req: INetResponse): void { + // + } + + //#endregion +} diff --git a/src/NetManager/WebSocketServerClass.ts b/src/NetManager/WebSocketServerClass.ts index 80d1999..d24c2e7 100644 --- a/src/NetManager/WebSocketServerClass.ts +++ b/src/NetManager/WebSocketServerClass.ts @@ -1,10 +1,10 @@ import express from "express" import fs from "fs" import _ws from "ws" +import Client from "../Client/Client" import { Action } from "../Engine/CatanEngine/CSharp/System/Action" import { INetResponse } from "../Engine/CatanEngine/NetManagerV2/Core/INetResponse" import BaseSingleton from "../Engine/Utils/Singleton/BaseSingleton" -import WebSocketClass from "./WebSocketClass" const SocketServer: typeof _ws.Server = _ws.Server /** @@ -63,7 +63,7 @@ export default class WebSocketServerClass extends BaseSingleton() { + + //#region private + + + //#endregion + + //#region Lifecycle + + /** + * + */ + constructor() { + super() + + } + + //#endregion + + //#region Custom + + //#endregion +} diff --git a/src/DBTools.ts b/src/Utils/DBTools.ts similarity index 100% rename from src/DBTools.ts rename to src/Utils/DBTools.ts diff --git a/src/Tools.ts b/src/Utils/Tools.ts similarity index 100% rename from src/Tools.ts rename to src/Utils/Tools.ts diff --git a/src/app.ts b/src/app.ts index 47e18fb..9cf3398 100644 --- a/src/app.ts +++ b/src/app.ts @@ -6,11 +6,13 @@ import dayjs from "dayjs" import "dayjs/locale/zh-tw" import dotenv from "dotenv" +import MainControlData from "./DataReceived/MainControlData" import "./Engine/CatanEngine/CSharp/String" import "./Engine/Utils/CCExtensions/ArrayExtension" import "./Engine/Utils/CCExtensions/NumberExtension" -import GuessWhoIAmClass from "./GuessWhoIAmClass" +import WebSocketServerClass from "./NetManager/WebSocketServerClass" dayjs.locale("zh-tw") dotenv.config() -new GuessWhoIAmClass() \ No newline at end of file +new WebSocketServerClass() +new MainControlData() \ No newline at end of file diff --git a/src/define/Request/.ExampleCodeRequest.ts b/src/define/Request/.ExampleCodeRequest.ts new file mode 100644 index 0000000..7939ce6 --- /dev/null +++ b/src/define/Request/.ExampleCodeRequest.ts @@ -0,0 +1,28 @@ +import { NetRequest } from "../../Engine/CatanEngine/NetManagerV2/NetRequest"; + +// #region Request + +export type RpcExampleCodeRequest = null +export type RpcExampleCodeResponse = ExampleCodeData[] + +export class ExampleCodeRequest extends NetRequest { + get Method(): string { + return "example.code"; + } + constructor() { + super(); + } +} + +// #endregion + +// #region Type + +export type ExampleCodeData = [ + id: number, + title: number, + content: number, + time: number, +]; + +// #endregion \ No newline at end of file diff --git a/src/define/Request/LobbyRequest.ts b/src/define/Request/LobbyRequest.ts new file mode 100644 index 0000000..9707b59 --- /dev/null +++ b/src/define/Request/LobbyRequest.ts @@ -0,0 +1,17 @@ +import { NetResponse } from "../../Engine/CatanEngine/NetManagerV2/NetResponse" +import Room from "../../Room/Room" + +// #region Request + +export type RpcLobbyListRequest = Room[] + +export class LobbyListRequest extends NetResponse { + protected data: RpcLobbyListRequest = undefined + protected method: string = "lobby.list" +} + +// #endregion + +// #region Type + +// #endregion \ No newline at end of file