final long timerID = vertx.setPeriodic(1000, new Handler<Long>() {
public void handle(Long id) {
sock.write(new Buffer("tick!"));
}
});
sock.endHandler(new VoidHandler() {
public void handle() {
vertx.cancelTimer(timerID);
}
});
}
});
installApp(new JsonObject().putString("prefix", "/amplify")
.putNumber("max_bytes_streaming", 4096),
new Handler<SockJSSocket>() {
long timerID;
public void handle(final SockJSSocket sock) {
sock.dataHandler(new Handler<Buffer>() {
public void handle(Buffer data) {
String str = data.toString();
int n = Integer.valueOf(str);
if (n < 0 || n > 19) {
n = 1;
}
int num = (int)Math.pow(2, n);
Buffer buff = new Buffer(num);
for (int i = 0; i < num; i++) {
buff.appendByte((byte)'x');
}
sock.write(buff);
}
});
}
});
installApp(new JsonObject().putString("prefix", "/broadcast")
.putNumber("max_bytes_streaming", 4096),
new Handler<SockJSSocket>() {
final Set<String> connections = vertx.sharedData().getSet("conns");
public void handle(final SockJSSocket sock) {
connections.add(sock.writeHandlerID());
sock.dataHandler(new Handler<Buffer>() {
public void handle(Buffer buffer) {
for (String actorID : connections) {
vertx.eventBus().publish(actorID, buffer);
}
}
});
sock.endHandler(new VoidHandler() {
public void handle() {
connections.remove(sock.writeHandlerID());
}
});
}