spring-boot-websocket-netty-server, 依赖spring-boot-parent
Spring Boot: user notifications with web socket
This example will shows how to send notifications, via web socket, to specific logged-in users.
Could be useful, for example, if you are trying to implement a real-time user notification system.
Build and run
springboot启动后: http://localhost/
Configurations
<dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.12.Final</version> </dependency>
@SpringBootApplication public class NettyWebSocketServerApplication implements CommandLineRunner{ @Autowired private ChatServer chatServer; public static void main(String[] args) { SpringApplication.run(NettyWebSocketServerApplication.class, args); } @Bean public ChatServer chatServer() { return new ChatServer(); } @Override public void run(String... args) throws Exception { InetSocketAddress address = new InetSocketAddress("127.0.0.1", 9090); ChannelFuture future = chatServer.start(address); Runtime.getRuntime().addShutdownHook(new Thread(){ @Override public void run() { chatServer.destroy(); } }); future.channel().closeFuture().syncUninterruptibly(); } }
@Override
protected void initChannel(Channel ch) throws Exception {
ChannelPipeline pipeline = ch.pipeline();
//处理日志
pipeline.addLast(new LoggingHandler(LogLevel.INFO));
//处理心跳
pipeline.addLast(new IdleStateHandler(0, 0, 1800, TimeUnit.SECONDS));
pipeline.addLast(new ChatHeartbeatHandler());
pipeline.addLast(new HttpServerCodec());
pipeline.addLast(new ChunkedWriteHandler());
pipeline.addLast(new HttpObjectAggregator(64 * 1024));
pipeline.addLast(new HttpRequestHandler("/ws"));
pipeline.addLast(new WebSocketServerProtocolHandler("/ws"));
pipeline.addLast(new TextWebSocketFrameHandler(group));
}
Prerequisites
- Java 8
- Maven > 3.0
From terminal
Go on the project's root folder, then type:
$ mvn spring-boot:run
项目完整路径:Spring-boot-netty-websocket