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 group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());
32 try {
33 ServerBootstrap bootstrap = new ServerBootstrap()
34 .group(group)
35 .channel(NioServerSocketChannel.class)
36 .childHandler(new StompWebSocketChatServerInitializer("/chat"));
37 bootstrap.bind(port).addListener(future -> {
38 if (future.isSuccess()) {
39 System.out.println("Open your web browser and navigate to http://127.0.0.1:" + PORT + '/');
40 } else {
41 System.out.println("Cannot start server, follows exception " + future.cause());
42 }
43 }).channel().closeFuture().sync();
44 } finally {
45 group.shutdownGracefully();
46 }
47 }
48
49 public static void main(String[] args) throws Exception {
50 new StompWebSocketChatServer().start(PORT);
51 }
52 }