Netty + websocket聊天室
程序处理逻辑

启用websocket
从标准的HTTP或者HTTPS协议切换到WebSocket时,将会使用一种称为升级握手的机制。因此,使用WebSocket的应用程序将始终以HTTP/S作为开始,然后再执行升级。这个升级动作发生的确切时刻特定于应用程序;它可能会发生在启动时,也可能会发生在请求了某个特定的URL之后
约定:
-
如果被请求的 URL 以/ws 结尾,那么我们将会把该协议升级为 WebSocket;
-
否则,服务器将使用基本的 HTTP/S
服务器逻辑:

处理http请求以及websocket

//扩展 SimpleChannel-InboundHandler 以处理FullHttpRequest 消息
public class HttpRequestHandler extends SimpleChannelInboundHandler<FullHttpRequest> {
private final String wsUri;
private static final File INDEX;
static {
URL location = HttpRequestHandler.class.getProtectionDomain().getCodeSource().getLocation();
try {
String path = location.toURI() + "index.html";
path = !path.contains("file:") ? path : path.substring(5);
INDEX = new File(path);
} catch (URISyntaxException e) {
throw new IllegalStateException("Unable to locate WebsocketChatClient.html", e);
}
}
public HttpRequestHandler(String wsUri) {
this.wsUri = wsUri;
}
@Override
public void channelRead0(ChannelHandlerContext ctx, FullHttpRequest request) throws Excep
Netty与WebSocket实现聊天室

本文介绍了如何利用Netty和WebSocket创建聊天室。通过处理HTTP请求和WebSocket升级握手,结合Netty的ChannelGroup实现消息广播,使得可以将消息发送到多个频道。在关闭服务器时,利用ChannelGroup的特性确保有序关闭。
最低0.47元/天 解锁文章

739

被折叠的 条评论
为什么被折叠?



