import WebSocket from "ws"; import { RPMessage } from "./utils/type"; import BaseProto from "./type/BaseProto"; import Manager from "./Manager"; import UserProto from "./type/UserProto"; import RegionProto from "./type/RegionProto"; import MsgProto from "./type/MsgProto"; import SessionProto from "./type/SessionProto"; export default class RoomProto extends BaseProto { user = new UserProto(this.id, this.ws, this.manager); region = new RegionProto(this.id, this.ws, this.manager); constructor(id: string, ws: WebSocket, manager: Manager) { super(id, ws, manager); this.setupMsgListener(); ws.on('close', this.onDisconnect.bind(this)); ws.on('error', console.error); } override handleMessage(msg: RPMessage) { console.log(msg); switch (msg.type) { case "user": this.user.handleMessage(msg); break; case "region": this.region.handleMessage(msg); break; case "session": new SessionProto(this.id, this.ws, this.manager).handleMessage(msg); break; case "msg": new MsgProto(this.id, this.ws, this.manager).handleMessage(msg); break; default: return this.ws.send(JSON.stringify({ code: '0001', data: 'Unknown Type' })); } } }