42 lines
1.4 KiB
TypeScript
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'
|
|
}));
|
|
}
|
|
}
|
|
} |