1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.example.stomp.websocket;
17
18 import io.netty.bootstrap.ServerBootstrap;
19 import io.netty.channel.ChannelFuture;
20 import io.netty.channel.ChannelFutureListener;
21 import io.netty.channel.EventLoopGroup;
22 import io.netty.channel.MultiThreadIoEventLoopGroup;
23 import io.netty.channel.nio.NioIoHandler;
24 import io.netty.channel.socket.nio.NioServerSocketChannel;
25
26 public class StompWebSocketChatServer {
27
28 static final int PORT = Integer.parseInt(System.getProperty("port", "8080"));
29
30 public void start(final int port) throws Exception {
31 EventLoopGroup bossGroup = new MultiThreadIoEventLoopGroup(1, NioIoHandler.newFactory());
32 EventLoopGroup workerGroup = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());
33 try {
34 ServerBootstrap bootstrap = new ServerBootstrap()
35 .group(bossGroup, workerGroup)
36 .channel(NioServerSocketChannel.class)
37 .childHandler(new StompWebSocketChatServerInitializer("/chat"));
38 bootstrap.bind(port).addListener(new ChannelFutureListener() {
39 @Override
40 public void operationComplete(ChannelFuture future) {
41 if (future.isSuccess()) {
42 System.out.println("Open your web browser and navigate to http://127.0.0.1:" + PORT + '/');
43 } else {
44 System.out.println("Cannot start server, follows exception " + future.cause());
45 }
46 }
47 }).channel().closeFuture().sync();
48 } finally {
49 bossGroup.shutdownGracefully();
50 workerGroup.shutdownGracefully();
51 }
52 }
53
54 public static void main(String[] args) throws Exception {
55 new StompWebSocketChatServer().start(PORT);
56 }
57 }