webbit: Evented HTTP, WebSocket server for Java and Clojure
Evented HTTP web apps are hot. Joe Walnes has created a Java spin on the idea with Webbit. Webbit makes it super simple to create a WebSocket server in just a few lines of Java:
public class HelloWebSockets implements WebSocketHandler {
int connectionCount;
public void onOpen(WebSocketConnection connection) {
connection.send("Hello! There are " + connectionCount + " other connections active");
connectionCount++;
}
public void onClose(WebSocketConnection connection) {
connectionCount--;
}
public void onMessage(WebSocketConnection connection, String message) {
connection.send(message.toUpperCase()); // echo back message in upper case
}
public static void main(String args) {
WebServer webServer = WebServers.createWebServer(8080)
.add("/hellowebsocket", new HelloWebSockets())
.add(new StaticFileHandler("/web"))
.start();
System.out.println("Server running at " + webServer.getUri());
}
}
Webbit isn’t just for Java folk. Jay Fields has a post demonstrating using Webbit in Clojure:
(ns server
(:require [clojure.contrib.json :as json]
[clojure.string :as s])
(:import [webbit WebServer WebServers WebSocketHandler]
[webbit.handler StaticFileHandler]))
(defn on-message [connection json-message]
(let [message (-> json-message json/read-json (get-in [:data :message]))]
(.send connection (json/json-str {:type "upcased" :message (s/upper-case message) }))))
(doto (WebServers/createWebServer 8080)
(.add "/websocket"
(proxy [WebSocketHandler] []
(onOpen [c] (println "opened" c))
(onClose [c] (println "closed" c))
(onMessage [c j] (on-message c j))))
(.add (StaticFileHandler. "."))
(.start))
(println "server up")
Check out the Webbit Readme or the samples folder for more information. We’ll definitely be watching Webbit.
Discussion
Sign in or Join to comment or subscribe