Skip to content

Instantly share code, notes, and snippets.

@colaru
Created July 2, 2013 14:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save colaru/5909579 to your computer and use it in GitHub Desktop.
Save colaru/5909579 to your computer and use it in GitHub Desktop.
Vert.x WebSocket server that insteed of responding to a request, register a Event Bus handler that send back to client all events on Event Bus for a given topic.
package com.openwager.rtp;
import org.vertx.java.core.Handler;
import org.vertx.java.core.buffer.Buffer;
import org.vertx.java.core.eventbus.Message;
import org.vertx.java.core.http.ServerWebSocket;
import org.vertx.java.core.json.JsonObject;
import org.vertx.java.core.streams.Pump;
import org.vertx.java.platform.Verticle;
public class WebSocketServer extends Verticle {
private static final int BUFF_SIZE = 32 * 1024;
int count = 0;
public void start() {
JsonObject config = container.config();
container.logger().info("Config is " + config);
int port = config.getInteger("port");
vertx.createHttpServer().setReceiveBufferSize(BUFF_SIZE).
setAcceptBacklog(10000).
setSendBufferSize(BUFF_SIZE).
setReceiveBufferSize(BUFF_SIZE).
websocketHandler(new Handler<ServerWebSocket>() {
public void handle(final ServerWebSocket ws) {
// ws.write(new Buffer("response-string: " + ++count));
container.logger().info("Connected: " + ++count);
ws.dataHandler(new Handler<Buffer>() {
public void handle(Buffer data) {
container.logger().info("Put an event on Event Bus: " + data.toString());
// vertx.eventBus().publish("default.address", data.toString());
// ws.writeTextFrame(data.toString()); // Echo it back
}
});
vertx.eventBus().registerHandler("default.address", new Handler<Message<String>>() {
@Override
public void handle(Message<String> message) {
message.reply("Test");
ws.writeTextFrame(message.body().toString()); // Echo it back twice
container.logger().info("Received: " + message.body().toString());
}
});
// Pump.createPump(ws, ws).start();
}
}).listen(port, "localhost");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment