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(new ChannelFutureListener() {
38 @Override
39 public void operationComplete(ChannelFuture future) {
40 if (future.isSuccess()) {
41 System.out.println("Open your web browser and navigate to http://127.0.0.1:" + PORT + '/');
42 } else {
43 System.out.println("Cannot start server, follows exception " + future.cause());
44 }
45 }
46 }).channel().closeFuture().sync();
47 } finally {
48 group.shutdownGracefully();
49 }
50 }
51
52 public static void main(String[] args) throws Exception {
53 new StompWebSocketChatServer().start(PORT);
54 }
55 }