Hallo ich versuche, einen ThreadServer in Haxe zu erstellen. Ich liebe diese Sprache, bin erst vor ein paar Tagen dazu gekommen, es ist eine Mischung aus C# und AS3, die ich beide liebe!Haxe Typ nicht gefunden: Client
Also das Problem ist, wenn ich versuche, die Clients in einer Liste zu speichern, um später darauf zugreifen zu können usw. Ich brauche es aber es sagt Typ nicht gefunden, aber es ist im selben Paket sollte es hier zugreifen können ist der Code mit den Dateinamen und dem Fehler.
Fehler:
var cl:Client = { id: num, cSocket:s };
var cData = new ClientData(cl);
Main.clients.add(cData);
Server.hx:
package;
import neko.Lib;
import sys.net.Socket;
import neko.net.ThreadServer;
import haxe.io.Bytes;
typedef Client =
{
var id : Int;
var cSocket:Socket;
}
typedef Message =
{
var str : String;
}
class Server extends ThreadServer<Client, Message>
{
// create a Client
override function clientConnected(s : Socket) : Client
{
var num = Std.random(100);
Lib.println("client " + num + " is " + s.peer());
var cl:Client = { id: num, cSocket:s };
var cData = new ClientData(cl);
Main.clients.add(cData);
return cl;
}
override function clientDisconnected(c : Client)
{
Lib.println("client " + Std.string(c.id) + " disconnected");
}
override function readClientMessage(c:Client, buf:Bytes, pos:Int, len:Int)
{
var complete = false;
var cpos = pos;
while (cpos < (pos+len) && !complete)
{
complete = (buf.get(cpos) == 0);
cpos++;
}
if (!complete) return null;
var msg:String = buf.getString(pos, cpos-pos);
return {msg: {str: msg}, bytes: cpos-pos};
}
override function clientMessage(c : Client, msg : Message)
{
Lib.println(c.id + " got: " + msg.str);
}
}
ClientData.hx:
package;
class ClientData
{
var client:Client;
public function new(c:Client)
{
this.client = c;
}
}
Main.hx:
package;
class Main
{
public static var clients=new List<ClientData>();
static function main()
{
var server = new Server();
server.run("localhost", 5588);
}
}
Danke für die Hilfe!
Omg bin so dumm srs Dank für diese Antwort nur hat es die Art bewegt Client.hx und es funktionierte! genial, habe gerade etwas Neues gelernt :) – Reptic
Du bist nicht dumm; Die Haxe-Sprache verstößt hier gegen das [Prinzip des geringsten Erstaunens] (https://en.wikipedia.org/wiki/Principle_of_least_astonishment) (wie es oft der Fall ist). P.S. Wenn die Antwort für Sie funktioniert hat, akzeptieren Sie sie bitte (https://stackoverflow.com/help/someone-answers). – Thomas
Ich werde es akzeptieren müssen nur warten paar Minuten zu tun, dass nur eine kurze Frage ist der ThreadServer skalierbar für große Projekte usw.? – Reptic