Commit 42ae911a authored by mercury233's avatar mercury233

full of bug

parent 098a4dfa
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
"underscore": "*", "underscore": "*",
"underscore.string": "*", "underscore.string": "*",
"request": "*", "request": "*",
"bunyan": "*", "bunyan": "*"
}, },
"license": "GPLv3", "license": "GPLv3",
"main": "ygopro-server.js", "main": "ygopro-server.js",
......
...@@ -83,7 +83,7 @@ class Room ...@@ -83,7 +83,7 @@ class Room
@process = spawn './ygopro', param, cwd: 'ygocore' @process = spawn './ygopro', param, cwd: 'ygocore'
@process.on 'exit', (code)=> @process.on 'exit', (code)=>
#log.info 'room-exit', this.name, this.port, code #log.info 'room-exit', this.name, this.port, code
@disconnector = 'server' unless @disconnector @process = null
this.delete() this.delete()
@process.stdout.setEncoding('utf8') @process.stdout.setEncoding('utf8')
@process.stdout.once 'data', (data)=> @process.stdout.once 'data', (data)=>
...@@ -91,7 +91,10 @@ class Room ...@@ -91,7 +91,10 @@ class Room
@port = parseInt data @port = parseInt data
_.each @players, (player)=> _.each @players, (player)=>
player.server.connect @port, '127.0.0.1',=> player.server.connect @port, '127.0.0.1',=>
player.server.write buffer for buffer in player.pre_establish_buffers for buffer in player.pre_establish_buffers
player.buffer=buffer
buffer=null
player.server.write player.buffer
player.established = true player.established = true
delete: -> delete: ->
...@@ -107,7 +110,10 @@ class Room ...@@ -107,7 +110,10 @@ class Room
if @established if @established
client.server.connect @port, '127.0.0.1', -> client.server.connect @port, '127.0.0.1', ->
client.server.write buffer for buffer in client.pre_establish_buffers for buffer in client.pre_establish_buffers
client.buffer=buffer
buffer=null
client.server.write client.buffer
client.established = true client.established = true
disconnect: (client, error)-> disconnect: (client, error)->
...@@ -121,7 +127,7 @@ class Room ...@@ -121,7 +127,7 @@ class Room
if @players.length if @players.length
ygopro.stoc_send_chat_to_room this, "#{client.name} #{'离开了游戏'}#{if error then ": #{error}" else ''}" ygopro.stoc_send_chat_to_room this, "#{client.name} #{'离开了游戏'}#{if error then ": #{error}" else ''}"
else else
@process.kill() @process.kill() if @process
this.delete() this.delete()
module.exports = Room module.exports = Room
\ No newline at end of file
...@@ -99,9 +99,7 @@ ...@@ -99,9 +99,7 @@
}); });
this.process.on('exit', (function(_this) { this.process.on('exit', (function(_this) {
return function(code) { return function(code) {
if (!_this.disconnector) { _this.process = null;
_this.disconnector = 'server';
}
return _this["delete"](); return _this["delete"]();
}; };
})(this)); })(this));
...@@ -116,7 +114,9 @@ ...@@ -116,7 +114,9 @@
ref = player.pre_establish_buffers; ref = player.pre_establish_buffers;
for (i = 0, len = ref.length; i < len; i++) { for (i = 0, len = ref.length; i < len; i++) {
buffer = ref[i]; buffer = ref[i];
player.server.write(buffer); player.buffer = buffer;
buffer = null;
player.server.write(player.buffer);
} }
return player.established = true; return player.established = true;
}); });
...@@ -148,7 +148,9 @@ ...@@ -148,7 +148,9 @@
ref = client.pre_establish_buffers; ref = client.pre_establish_buffers;
for (i = 0, len = ref.length; i < len; i++) { for (i = 0, len = ref.length; i < len; i++) {
buffer = ref[i]; buffer = ref[i];
client.server.write(buffer); client.buffer = buffer;
buffer = null;
client.server.write(client.buffer);
} }
return client.established = true; return client.established = true;
}); });
...@@ -171,7 +173,9 @@ ...@@ -171,7 +173,9 @@
if (this.players.length) { if (this.players.length) {
return ygopro.stoc_send_chat_to_room(this, client.name + " " + '离开了游戏' + (error ? ": " + error : '')); return ygopro.stoc_send_chat_to_room(this, client.name + " " + '离开了游戏' + (error ? ": " + error : ''));
} else { } else {
this.process.kill(); if (this.process) {
this.process.kill();
}
return this["delete"](); return this["delete"]();
} }
} }
......
This diff is collapsed.
This diff is collapsed.
...@@ -76,8 +76,9 @@ for name, declaration of structs_declaration ...@@ -76,8 +76,9 @@ for name, declaration of structs_declaration
header = new Buffer(3) header = new Buffer(3)
header.writeUInt16LE buffer.length + 1, 0 header.writeUInt16LE buffer.length + 1, 0
header.writeUInt8 proto, 2 header.writeUInt8 proto, 2
socket.write header if socket
socket.write buffer if buffer.length socket.write header
socket.write buffer if buffer.length
@ctos_send = (socket, proto, info)-> @ctos_send = (socket, proto, info)->
#console.log proto, proto_structs.CTOS[proto], structs[proto_structs.CTOS[proto]] #console.log proto, proto_structs.CTOS[proto], structs[proto_structs.CTOS[proto]]
...@@ -101,8 +102,9 @@ for name, declaration of structs_declaration ...@@ -101,8 +102,9 @@ for name, declaration of structs_declaration
header = new Buffer(3) header = new Buffer(3)
header.writeUInt16LE buffer.length + 1, 0 header.writeUInt16LE buffer.length + 1, 0
header.writeUInt8 proto, 2 header.writeUInt8 proto, 2
socket.write header if socket
socket.write buffer if buffer.length socket.write header
socket.write buffer if buffer.length
#util #util
@stoc_send_chat = (client, msg, player = 8)-> @stoc_send_chat = (client, msg, player = 8)->
......
...@@ -126,9 +126,11 @@ ...@@ -126,9 +126,11 @@
header = new Buffer(3); header = new Buffer(3);
header.writeUInt16LE(buffer.length + 1, 0); header.writeUInt16LE(buffer.length + 1, 0);
header.writeUInt8(proto, 2); header.writeUInt8(proto, 2);
socket.write(header); if (socket) {
if (buffer.length) { socket.write(header);
return socket.write(buffer); if (buffer.length) {
return socket.write(buffer);
}
} }
}; };
...@@ -160,9 +162,11 @@ ...@@ -160,9 +162,11 @@
header = new Buffer(3); header = new Buffer(3);
header.writeUInt16LE(buffer.length + 1, 0); header.writeUInt16LE(buffer.length + 1, 0);
header.writeUInt8(proto, 2); header.writeUInt8(proto, 2);
socket.write(header); if (socket) {
if (buffer.length) { socket.write(header);
return socket.write(buffer); if (buffer.length) {
return socket.write(buffer);
}
} }
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment