view src/WebSocketServer.java @ 0:5a50d4b48bf9

init
author kazz <kazz@cr.ie.u-ryukyu.ac.jp>
date Wed, 19 Jan 2011 00:16:26 +0900
parents
children d5d2ca53a832
line wrap: on
line source

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.ServerSocketChannel;

public class WebSocketServer {
	public static int port;
	private ServerSocketChannel ssChannel;
	private Selector selector;
	private boolean running = true;
	
	public WebSocketServer(int port) {
		this.port = port;
		try {
			ssChannel = ServerSocketChannel.open();
			ssChannel.socket().bind(new InetSocketAddress(port));
			ssChannel.configureBlocking(false);
			selector = Selector.open();
			ssChannel.register(selector, SelectionKey.OP_ACCEPT, new AcceptHandler());
		} catch (IOException e) {
			System.out.println("Can't open ServerSocketChannel.");
			e.printStackTrace();
		}
	}
	
	public void mainLoop() {
		
		while (running) {
			try {
				int keyCount = selector.select(0);
				for (SelectionKey key : selector.selectedKeys()) {
					Handler handler = (Handler) key.attachment();
					handler.handle(key);
					selector.selectedKeys().remove(key);
				}
				
			} catch (IOException e) {
				e.printStackTrace();
			}
		} 
		
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		WebSocketServer wsServer = new WebSocketServer(11000);
		wsServer.mainLoop();
	}

}