Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
A Java event based WebSocket and HTTP server
Java Python JavaScript

This branch is 524 commits behind webbit:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
src
.gitignore
AUTHORS
HISTORY.md
LICENSE
Makefile
README.md
pom.xml

README.md

Webbit - A Java event based WebSocket and HTTP server

Getting it

Warning: Webbit has not had a stable release yet - the API changes regularly.

git clone git://github.com/joewalnes/webbit.git
cd webbit
make

You will need to add dist/webbit.jar to your classpath - it has no external dependencies.

Quick start

Start a web server on port 8080 and serve some static files:

WebServer webServer = WebServers.createWebServer(8080)
  .add(new StaticFileHandler("/web")) // path to web content
  .start();

That was easy.

Now let's build a WebSocketHandler.

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());
  }
}

And a page that uses the WebSocket (web/index.html)

<html>
  <body>

    <!-- Send text to websocket -->
    <input id="userInput" type="text">
    <button onclick="ws.send(document.getElementById('userInput').value)">Send</button>

    <!-- Results -->
    <div id="message"></div>

    <script>
      function showMessage(text) {
        document.getElementById('message').innerHTML = text;
      }

      var ws = new WebSocket('ws://' + document.location.host + '/hellowebsocket');
      showMessage('Connecting...');
      ws.onopen = function() { showMessage('Connected!'); };
      ws.onclose = function() { showMessage('Lost connection'); };
      ws.onmessage = function(msg) { showMessage(msg.data); };
    </script>
  </body>
</html>

More

Something went wrong with that request. Please try again.