Skip to content

Instantly share code, notes, and snippets.

@aslakhellesoy
Created December 2, 2011 03:49
Show Gist options
  • Save aslakhellesoy/1421652 to your computer and use it in GitHub Desktop.
Save aslakhellesoy/1421652 to your computer and use it in GitHub Desktop.
Webbit Chat Server
body {
font-family: arial, sans-serif;
padding: 10px;
}
#chatlog, #entry {
width: 100%;
border: solid 4px #000000;
font-weight: bold;
font-family: monospace;
font-size: 30px;
}
window.onload = function() {
var ws = new WebSocket('ws://' + document.location.host + '/chat');
ws.onmessage = function(e) {
var chatlog = document.getElementById('chatlog');
chatlog.value += e.data + '\n';
};
function send(text) {
ws.send(text);
}
var entry = document.getElementById('entry');
entry.onkeypress = function(e) {
if(entry.value && e.keyCode == 13) {
send(entry.value);
entry.value = '';
}
};
};
<!DOCTYPE html>
<html>
<head>
<title>Chat room</title>
<link rel="stylesheet" type="text/css" href="chatroom.css">
<script type="text/javascript" src="chatroom.js"></script>
</head>
<body>
<textarea id="chatlog" rows="5"></textarea>
<input type="text" id="entry">
</body>
</html>
package yow.webbit.chat;
import org.webbitserver.*;
import org.webbitserver.handler.StaticFileHandler;
import org.webbitserver.handler.logging.LoggingHandler;
import org.webbitserver.handler.logging.SimpleLogSink;
import org.webbitserver.netty.NettyWebServer;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) throws IOException {
WebServer server = new NettyWebServer(8080);
server.add(new LoggingHandler(new SimpleLogSink()));
server.add(new StaticFileHandler("src/main/resources/web"));
server.add("/chat", new WebSocketHandler() {
public Set<WebSocketConnection> connections = new HashSet<WebSocketConnection>();
public void onOpen(WebSocketConnection connection) throws Exception {
connections.add(connection);
}
public void onClose(WebSocketConnection connection) throws Exception {
connections.remove(connection);
}
public void onMessage(WebSocketConnection connection, String msg) throws Throwable {
for (WebSocketConnection ws : connections) {
ws.send(msg);
}
}
public void onMessage(WebSocketConnection connection, byte[] msg) throws Throwable {
throw new UnsupportedOperationException();
}
public void onPong(WebSocketConnection connection, String msg) throws Throwable {
throw new UnsupportedOperationException();
}
});
server.start();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment