Skip to content

Instantly share code, notes, and snippets.

@azenla
Created December 11, 2015 00:05
Show Gist options
  • Save azenla/afbd2bbf3db0c923b9ad to your computer and use it in GitHub Desktop.
Save azenla/afbd2bbf3db0c923b9ad to your computer and use it in GitHub Desktop.
import "dart:async";
import "dart:io";
import "dart:convert";
main(List<String> args) async {
if (args.isEmpty) {
args = ["--server"];
}
if (args[0] == "--server") {
await createServer();
} else {
await createClient();
}
}
createServer() async {
var server = await HttpServer.bind("0.0.0.0", 9540);
var i = 1;
int received = 0;
new Timer.periodic(const Duration(seconds: 1), (_) {
print("Received: ${received}");
received = 0;
});
await for (HttpRequest request in server) {
var id = i++;
if (!(await WebSocketTransformer.isUpgradeRequest(request))) {
request.response
..statusCode = HttpStatus.BAD_REQUEST
..writeln("Bad Request.")
..close();
continue;
}
WebSocket socket = await WebSocketTransformer.upgrade(request);
socket.listen((data) {
if (data is String) {
var json = const JsonDecoder().convert(data);
var sendback = const JsonEncoder().convert(json);
socket.add(sendback);
received++;
}
});
}
}
createClient() async {
var baseData = {
"method": "set",
"path": "/data/benchmark/counter",
"value": "Hello",
"rid": 40
};
String sendData = const JsonEncoder().convert({
"requests": new List<Map>.generate(10000, (i) => baseData),
"msg": 1
});
WebSocket socket = await WebSocket.connect("ws://127.0.0.1:9540/ws");
int limit = 100;
socket.listen((data) {
limit++;
});
while (true) {
if (limit > 0) {
socket.add(sendData);
limit--;
} else {
await new Future.delayed(new Duration(seconds:1));
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment