-
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
package ru.m.armageddon.client;
|
package ru.m.armageddon.client;
|
||||||
|
|
||||||
|
import haxe.io.BytesInput;
|
||||||
|
import flash.events.ProgressEvent;
|
||||||
import haxe.io.Bytes;
|
import haxe.io.Bytes;
|
||||||
import flash.events.Event;
|
import flash.events.Event;
|
||||||
import flash.events.SecurityErrorEvent;
|
import flash.events.SecurityErrorEvent;
|
||||||
@@ -9,7 +11,6 @@ import haxework.log.TraceLogger;
|
|||||||
import flash.net.Socket;
|
import flash.net.Socket;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Client {
|
class Client {
|
||||||
|
|
||||||
private static inline var TAG = "Armageddon";
|
private static inline var TAG = "Armageddon";
|
||||||
@@ -36,7 +37,9 @@ class Client {
|
|||||||
socket.addEventListener(Event.CONNECT, onConnect);
|
socket.addEventListener(Event.CONNECT, onConnect);
|
||||||
//socket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
|
//socket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
|
||||||
//socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
|
//socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
|
||||||
//socket.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);
|
socket.addEventListener(ProgressEvent.SOCKET_DATA, onSocketData);
|
||||||
|
//socket.endian = flash.utils.Endian.LITTLE_ENDIAN;
|
||||||
|
|
||||||
socket.connect("localhost", 5000);
|
socket.connect("localhost", 5000);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -50,4 +53,16 @@ class Client {
|
|||||||
socket.writeShort(bytes.length);
|
socket.writeShort(bytes.length);
|
||||||
socket.writeBytes(cast bytes.getData());
|
socket.writeBytes(cast bytes.getData());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function onSocketData(_) {
|
||||||
|
L.d(TAG, "onSocketData");
|
||||||
|
var b = new flash.utils.ByteArray();
|
||||||
|
L.d(TAG, "socket.bytesAvailable: " + socket.bytesAvailable);
|
||||||
|
socket.readBytes(b);
|
||||||
|
var bs = Bytes.ofData(cast b);
|
||||||
|
L.d(TAG, "bs.length: " + bs.length);
|
||||||
|
var response = new LoginResponse();
|
||||||
|
response.mergeFrom(bs);
|
||||||
|
L.d(TAG, response.user.login);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package ru.m.armageddon.server;
|
package ru.m.armageddon.server;
|
||||||
|
|
||||||
|
import haxe.io.BytesOutput;
|
||||||
|
import sys.db.Connection;
|
||||||
import sys.db.Mysql;
|
import sys.db.Mysql;
|
||||||
|
|
||||||
import neko.Lib;
|
import neko.Lib;
|
||||||
@@ -9,6 +11,7 @@ import haxe.io.Bytes;
|
|||||||
|
|
||||||
typedef Client = {
|
typedef Client = {
|
||||||
var id:Int;
|
var id:Int;
|
||||||
|
var socket:Socket;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef Message = {
|
typedef Message = {
|
||||||
@@ -18,11 +21,15 @@ typedef Message = {
|
|||||||
class Server extends ThreadServer<Client, Message> {
|
class Server extends ThreadServer<Client, Message> {
|
||||||
// create a Client
|
// create a Client
|
||||||
override function clientConnected(s:Socket):Client {
|
override function clientConnected(s:Socket):Client {
|
||||||
|
s.input.bigEndian = false;
|
||||||
|
s.output.bigEndian = false;
|
||||||
var num = Std.random(100);
|
var num = Std.random(100);
|
||||||
Lib.println("client " + num + " is " + s.peer());
|
Lib.println("client " + num + " is " + s.peer());
|
||||||
return { id: num };
|
return { id: num, socket: s };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
override function clientDisconnected(c:Client) {
|
override function clientDisconnected(c:Client) {
|
||||||
Lib.println("client " + Std.string(c.id) + " disconnected");
|
Lib.println("client " + Std.string(c.id) + " disconnected");
|
||||||
}
|
}
|
||||||
@@ -33,26 +40,30 @@ class Server extends ThreadServer<Client, Message> {
|
|||||||
request.mergeFrom(buf);
|
request.mergeFrom(buf);
|
||||||
Lib.println(request.login);
|
Lib.println(request.login);
|
||||||
Lib.println(request.password);
|
Lib.println(request.password);
|
||||||
|
var db = new Db();
|
||||||
|
var data = db.getUser();
|
||||||
|
|
||||||
// find out if there's a full message, and if so, how long it is.
|
var user = new User();
|
||||||
var complete = false;
|
user.login = data.login;
|
||||||
var cpos = pos;
|
user.nickname = data.login;
|
||||||
while (cpos < (pos + len) && !complete) {
|
|
||||||
//check for a period/full stop (i.e.: "." ) to signify a complete message
|
|
||||||
complete = (buf.get(cpos) == 46);
|
|
||||||
cpos++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// no full message
|
var response = new LoginResponse();
|
||||||
if (!complete) return null;
|
response.user = user;
|
||||||
|
|
||||||
// got a full message, return it
|
var b = new BytesOutput();
|
||||||
var msg:String = buf.readString(pos, cpos - pos);
|
response.writeTo(b);
|
||||||
return {msg: {str: msg}, bytes: cpos - pos};
|
var bytes = b.getBytes();
|
||||||
|
c.socket.output.writeUInt16(bytes.length);
|
||||||
|
c.socket.output.writeBytes(bytes, 0, bytes.length);
|
||||||
|
|
||||||
|
return {
|
||||||
|
msg : null,
|
||||||
|
bytes : len
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
override function clientMessage(c:Client, msg:Message) {
|
override function clientMessage(c:Client, msg:Message) {
|
||||||
Lib.println(c.id + " sent: " + msg.str);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function main() {
|
public static function main() {
|
||||||
@@ -63,17 +74,23 @@ class Server extends ThreadServer<Client, Message> {
|
|||||||
|
|
||||||
class Db {
|
class Db {
|
||||||
|
|
||||||
public function new() {
|
private var db:Connection;
|
||||||
var cnx = Mysql.connect({
|
|
||||||
host : "localhost",
|
|
||||||
port : 3306,
|
|
||||||
user : "shmyga",
|
|
||||||
pass : "xkbp8jh9z2",
|
|
||||||
socket : null,
|
|
||||||
database : "armageddon"
|
|
||||||
});
|
|
||||||
|
|
||||||
cnx.close();
|
public function new() {
|
||||||
|
db = Mysql.connect({
|
||||||
|
host : "localhost",
|
||||||
|
port : 3306,
|
||||||
|
user : "shmyga",
|
||||||
|
pass : "xkbp8jh9z2",
|
||||||
|
socket : null,
|
||||||
|
database : "armageddon"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getUser() {
|
||||||
|
var rset = db.request("SELECT * FROM Users");
|
||||||
|
var user = rset.next();
|
||||||
|
return user;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user