@@ -77,7 +77,38 @@ function generateCrcTable(): void {
77
77
crcTable = buffer ;
78
78
}
79
79
80
- export function runGameServer ( ) : void {
80
+ function openServer ( ) : void {
81
+ net . createServer ( socket => {
82
+ socket . setNoDelay ( true ) ;
83
+ socket . setKeepAlive ( true ) ;
84
+ socket . setTimeout ( 30000 ) ;
85
+
86
+ let clientConnection = new ClientConnection ( socket ) ;
87
+
88
+ socket . on ( 'data' , data => {
89
+ if ( clientConnection ) {
90
+ clientConnection . parseIncomingData ( new ByteBuffer ( data ) ) ;
91
+ }
92
+ } ) ;
93
+
94
+ socket . on ( 'close' , ( ) => {
95
+ if ( clientConnection ) {
96
+ clientConnection . connectionDestroyed ( ) ;
97
+ clientConnection = null ;
98
+ }
99
+ } ) ;
100
+
101
+ socket . on ( 'error' , error => {
102
+ logger . error ( 'Socket destroyed due to connection error.' ) ;
103
+ logger . error ( error . message ) ;
104
+ socket . destroy ( ) ;
105
+ } ) ;
106
+ } ) . listen ( serverConfig . port , serverConfig . host ) ;
107
+
108
+ logger . info ( `Game server listening on port ${ serverConfig . port } .` ) ;
109
+ }
110
+
111
+ export async function runGameServer ( ) : Promise < void > {
81
112
serverConfig = parseServerConfig ( ) ;
82
113
83
114
if ( ! serverConfig ) {
@@ -90,52 +121,22 @@ export function runGameServer(): void {
90
121
} ) ;
91
122
generateCrcTable ( ) ;
92
123
93
- delete cache . dataChannel ;
94
- delete cache . metaChannel ;
95
- delete cache . indexChannels ;
96
- delete cache . indices ;
124
+ // @TODO keep these in the login server so they don't eat game server memory :)
125
+ // delete cache.dataChannel;
126
+ // delete cache.metaChannel;
127
+ // delete cache.indexChannels;
128
+ // delete cache.indices;
97
129
98
130
world = new World ( ) ;
99
- injectPlugins ( ) . then ( ( ) => {
100
- world . init ( ) ;
101
-
102
- delete cache . mapData ;
103
-
104
- if ( process . argv . indexOf ( '-fakePlayers' ) !== - 1 ) {
105
- world . generateFakePlayers ( ) ;
106
- }
131
+ await injectPlugins ( ) ;
107
132
108
- net . createServer ( socket => {
109
- logger . info ( 'Socket opened' ) ;
133
+ world . init ( ) ; // .then(() => delete cache.mapData);
110
134
111
- socket . setNoDelay ( true ) ;
112
- socket . setKeepAlive ( true ) ;
113
- socket . setTimeout ( 30000 ) ;
114
-
115
- let clientConnection = new ClientConnection ( socket ) ;
116
-
117
- socket . on ( 'data' , data => {
118
- if ( clientConnection ) {
119
- clientConnection . parseIncomingData ( new ByteBuffer ( data ) ) ;
120
- }
121
- } ) ;
122
-
123
- socket . on ( 'close' , ( ) => {
124
- if ( clientConnection ) {
125
- clientConnection . connectionDestroyed ( ) ;
126
- clientConnection = null ;
127
- }
128
- } ) ;
129
-
130
- socket . on ( 'error' , error => {
131
- logger . error ( error . message ) ;
132
- socket . destroy ( ) ;
133
- logger . error ( 'Socket destroyed due to connection error.' ) ;
134
- } ) ;
135
- } ) . listen ( serverConfig . port , serverConfig . host ) ;
135
+ if ( process . argv . indexOf ( '-fakePlayers' ) !== - 1 ) {
136
+ world . generateFakePlayers ( ) ;
137
+ }
136
138
137
- logger . info ( `Game server listening on port ${ serverConfig . port } .` ) ;
138
- } ) ;
139
+ openServer ( ) ;
139
140
140
141
const watcher = watch ( 'dist/plugins/' ) ;
141
142
watcher . on ( 'ready' , ( ) => {
0 commit comments