zzyxyz_game/src/RoomProto/RoomProto.ts

42 lines
1.4 KiB
TypeScript

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'
}));
}
}
}