it is definitely not our experience that messages are sent in 200ms batches. i just wrote a test client to connect to union server running on amazon ec2 and was able to consistently send 25 round-trip messages per second. here's the code (actionscript 3 + reactor), modified to connect to tryunion (which is a bit less responsive due to hardware and network configuration):
- Code: Select all
package {
import flash.display.Sprite;
import flash.text.TextField;
import flash.utils.setInterval;
import net.user1.reactor.Client;
import net.user1.reactor.Reactor;
import net.user1.reactor.ReactorEvent;
public class UnionTest1 extends Sprite {
protected var reactor:Reactor;
protected var lastTestReceived:uint;
protected var output:TextField;
public function UnionTest1 () {
reactor = new Reactor();
reactor.addEventListener(ReactorEvent.READY, readyListener);
reactor.connect("tryunion.com", 80);
output = new TextField();
output.width = 400;
output.height = 300;
output.background = true;
output.border = true;
addChild(output);
}
public function readyListener (e:ReactorEvent):void {
reactor.getMessageManager().addMessageListener("TEST", testMessageListener);
reactor.self().sendMessage("TEST");
}
public function testMessageListener (fromClient:Client):void {
var now:uint = new Date().time;
output.appendText("Time since last TEST received: " + (now-lastTestReceived) + "\n");
output.scrollV = output.maxScrollV;
lastTestReceived = now;
reactor.self().sendMessage("TEST");
}
}
}
here's a sample of my ec2 output:
- Code: Select all
Time since last TEST received: 34
Time since last TEST received: 33
Time since last TEST received: 17
Time since last TEST received: 32
Time since last TEST received: 20
Time since last TEST received: 18
Time since last TEST received: 18
Time since last TEST received: 22
Time since last TEST received: 20
Time since last TEST received: 18
Time since last TEST received: 19
Time since last TEST received: 21
Time since last TEST received: 9
Time since last TEST received: 30
Time since last TEST received: 18
Time since last TEST received: 20
Time since last TEST received: 18
Time since last TEST received: 14
Time since last TEST received: 24
Time since last TEST received: 18
Time since last TEST received: 20
Time since last TEST received: 21
Time since last TEST received: 17
Time since last TEST received: 19
Time since last TEST received: 20
Time since last TEST received: 17
Time since last TEST received: 19
Time since last TEST received: 25
Time since last TEST received: 16
Time since last TEST received: 36
Time since last TEST received: 67
Time since last TEST received: 33
Time since last TEST received: 50
Time since last TEST received: 33
Time since last TEST received: 51
Time since last TEST received: 33
Time since last TEST received: 51
Time since last TEST received: 33
Time since last TEST received: 49
Time since last TEST received: 17
Time since last TEST received: 32
Time since last TEST received: 14
Time since last TEST received: 35
Time since last TEST received: 50
Time since last TEST received: 33
Time since last TEST received: 49
Time since last TEST received: 18
Time since last TEST received: 17
there is one possible explanation for your observation: you might be connected over http. union uses http as a transport mechanism when a direct socket connection cannot be established due to firewall restrictions. by default, when http is the current transport, reactor and orbiter both batch messages into 200ms groups. that 200ms delay is, however, configurable. for details, see:
http://unionplatform.com/docs/reactor/a ... SendDelay()
if you are 100% certain you are connected over WebSocket or XMLSocket, and have explicit steps and a test case to reproduce the issue you are seeing, please post the code/steps.
thanks,
colin