NorTicUs
NorTicUs

Reputation: 752

How to handle Socket with Haxe/CPP

I'm trying to create a socket based communication with a server, with a Haxe client targetting CPP.

I'm looking at sys.net.Socket that looks like what I want, but every methods is synchronous! How can I wait for a server event?

I'm used to Node syntax with .on() functions, is there any equivalent here?

Thanks

Upvotes: 3

Views: 830

Answers (2)

Jeff Ward
Jeff Ward

Reputation: 19146

There are two possible solutions for non-blocking socket access in haxe/cpp:

1) Set the socket to non-blocking

With the Socket.setBlocking method you set the blocking behavior of the socket. If set to true, which is the default, methods like socket.accept() (and likely socket.read() but I haven't personally tested it) will block until they complete.

But if you set blocking to false, those functions will throw if no data is available (you'll need to catch and move on.) So in your main loop you could access your non-blocking socket with try/catch around the read() calls.

2) Put your socket in a separate thread from your main loop

You can easily create a separate Thread for your socket communcations, so then a blocking socket is fine. In this model, your socket thread will send data back to the main thread with Thread.sendMessage(), your main loop will check via Thread.readMessage(block:Bool) whether there's new data from the socket.

Upvotes: 2

blackmagic
blackmagic

Reputation: 178

Historically hxcpp and async is arduous task as there is no hxcpp main loop out of the box, so the task is virtually always deferred to a toolkit ( openfl, nme etc...)

AFAIK there is no out of the box solution, binding http://zeromq.org/ might be a straghtforward and easy task thought.

You can also defer to HTTP implemtentations boxed with your favorite toolkit.

Good luck !

Upvotes: 2

Related Questions