您的位置:首页 > 编程语言 > Java开发

Spring-boot集成Netty做websocket服务端

2017-06-21 14:04 351 查看


spring-boot-websocket-netty-server, 依赖spring-boot-parent

spring-boot
Netty

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息