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