生产环境使用redis和mongodb
This commit is contained in:
parent
d647870ce2
commit
4132663fef
@ -478,7 +478,7 @@ interface Array<T> {
|
||||
* @returns {boolean} true 有这个数据并且删除成功
|
||||
* false 没有这个数据
|
||||
*/
|
||||
remove?(t: T): boolean;
|
||||
removeEx?(t: T): boolean;
|
||||
|
||||
/**
|
||||
* 排序 支持多重排序
|
||||
@ -580,6 +580,13 @@ interface Array<T> {
|
||||
* @param arr
|
||||
*/
|
||||
difference?<T>(arr: T[]): T[];
|
||||
|
||||
/**
|
||||
* 转换成Map
|
||||
* @param {string} key 用于生成map的key字段名
|
||||
* @return {Map<any, T>}
|
||||
*/
|
||||
toMap?<T>(key: string): Map<any, T>;
|
||||
}
|
||||
|
||||
Object.defineProperties(Array.prototype, {
|
||||
@ -614,7 +621,7 @@ Object.defineProperties(Array.prototype, {
|
||||
},
|
||||
writable: true
|
||||
},
|
||||
remove: {
|
||||
removeEx: {
|
||||
value: function <T>(this: T[], t: T) {
|
||||
let idx = this.indexOf(t);
|
||||
if (~idx) {
|
||||
@ -858,6 +865,18 @@ Object.defineProperties(Array.prototype, {
|
||||
return [...set1];
|
||||
},
|
||||
writable: true
|
||||
},
|
||||
|
||||
toMap: {
|
||||
value: function<T> (this: T[], key: string) {
|
||||
let result: Map<any, T> = new Map()
|
||||
for(const o of this) {
|
||||
// @ts-ignore
|
||||
result.set(o[key], o)
|
||||
}
|
||||
return result
|
||||
},
|
||||
writable: true
|
||||
}
|
||||
|
||||
});
|
||||
|
28
src/index.ts
28
src/index.ts
@ -1,7 +1,7 @@
|
||||
import http from "http";
|
||||
import express from "express";
|
||||
import cors from "cors";
|
||||
import {Server} from "colyseus";
|
||||
import { RedisPresence, Server } from 'colyseus'
|
||||
import {monitor} from "@colyseus/monitor";
|
||||
import rateLimit from "express-rate-limit";
|
||||
// import socialRoutes from "@colyseus/social/express"
|
||||
@ -9,15 +9,16 @@ import {GeneralRoom} from "./rooms/GeneralRoom";
|
||||
import {initData} from "./common/GConfig";
|
||||
import {Config} from "./cfg/Config";
|
||||
import {RankedLobbyRoom} from "./rooms/RankedLobbyRoom";
|
||||
import { MongooseDriver } from 'colyseus/lib/matchmaker/drivers/MongooseDriver'
|
||||
|
||||
require('./rooms/MSender');
|
||||
require('./rooms/RoomExtMethod');
|
||||
require('./common/Extend');
|
||||
|
||||
const isProd = process.env.NODE_ENV === 'production'
|
||||
|
||||
let config: Config = require('../config/config.json');
|
||||
|
||||
const port = Number(process.env.PORT || 2567);
|
||||
// const port = Number(process.env.PORT) + Number(process.env.NODE_APP_INSTANCE);
|
||||
const app = express()
|
||||
|
||||
|
||||
@ -25,11 +26,22 @@ app.use(cors());
|
||||
app.use(express.json())
|
||||
initData();
|
||||
const server = http.createServer(app);
|
||||
const gameServer = new Server({
|
||||
server,
|
||||
// driver: new MongooseDriver(config.mongodb),
|
||||
// presence: new RedisPresence({url: config.redis}),
|
||||
});
|
||||
let port
|
||||
let gameServer
|
||||
if (isProd) {
|
||||
port = Number(process.env.PORT) + Number(process.env.NODE_APP_INSTANCE);
|
||||
gameServer = new Server({
|
||||
server,
|
||||
driver: new MongooseDriver(config.mongodb),
|
||||
presence: new RedisPresence({url: config.redis}),
|
||||
});
|
||||
} else {
|
||||
port = Number(process.env.PORT || 2567);
|
||||
gameServer = new Server({
|
||||
server,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// register your room handlers
|
||||
gameServer.define('general_room', GeneralRoom);
|
||||
|
@ -439,7 +439,7 @@ export class RankedLobbyRoom extends Room {
|
||||
let data = [...stat.clients.values()][0]
|
||||
stat.rank = data.options.rank
|
||||
} else {
|
||||
this.stats.remove(stat)
|
||||
this.stats.removeEx(stat)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user