public static FullHttpResponse response(final SockJsConfig config, final HttpRequest request) throws Exception { final QueryStringDecoder qsd = new QueryStringDecoder(request.getUri()); final String path = qsd.path(); if (!PATH_PATTERN.matcher(path).matches()) { return createResponse(request, NOT_FOUND, copiedBuffer("Not found", UTF_8)); } if (request.headers().contains(HttpHeaders.Names.IF_NONE_MATCH)) { final FullHttpResponse response = createResponse(request, NOT_MODIFIED); response.headers().set(HttpHeaders.Names.SET_COOKIE, "JSESSIONID=dummy; path=/"); return response; } else { final String content = createContent(config.sockJsUrl()); final FullHttpResponse response = createResponse(request, OK, copiedBuffer(content, UTF_8)); response.headers().set(HttpHeaders.Names.CONTENT_TYPE, "text/html; charset=UTF-8"); response.headers().set(HttpHeaders.Names.CACHE_CONTROL, "max-age=31536000, public"); response.headers().set(HttpHeaders.Names.EXPIRES, generateExpires()); final String etag = '\"' + generateMd5(content) + '\"'; response.headers().set(HttpHeaders.Names.ETAG, etag); return response; } }
private static void handleService(final SockJsServiceFactory factory, final FullHttpRequest request, final ChannelHandlerContext ctx) throws Exception { if (logger.isDebugEnabled()) { logger.debug("RequestUri : [{}]", request.getUri()); } final String pathWithoutPrefix = request.getUri().replaceFirst(factory.config().prefix(), ""); final String path = new QueryStringDecoder(pathWithoutPrefix).path(); if (Greeting.matches(path)) { writeResponse(ctx.channel(), request, Greeting.response(request)); } else if (Info.matches(path)) { writeResponse(ctx.channel(), request, Info.response(factory.config(), request)); } else if (Iframe.matches(path)) { writeResponse(ctx.channel(), request, Iframe.response(factory.config(), request)); } else if (Transports.Type.WEBSOCKET.path().equals(path)) { addTransportHandler(new RawWebSocketTransport(factory.config(), factory.create()), ctx); ctx.fireChannelRead(request.retain()); } else { final PathParams sessionPath = matches(path); if (sessionPath.matches()) { handleSession(factory, request, ctx, sessionPath); } else { writeNotFoundResponse(request, ctx); } } }
private static void handleService(final SockJsServiceFactory factory, final FullHttpRequest request, final ChannelHandlerContext ctx) throws Exception { if (logger.isDebugEnabled()) { logger.debug("RequestUri : [{}]", request.getUri()); } final String pathWithoutPrefix = request.getUri().replaceFirst(factory.config().prefix(), ""); final String path = new QueryStringDecoder(pathWithoutPrefix).path(); if (Greeting.matches(path)) { writeResponse(ctx.channel(), request, Greeting.response(request)); } else if (Info.matches(path)) { writeResponse(ctx.channel(), request, Info.response(factory.config(), request)); } else if (Iframe.matches(path)) { writeResponse(ctx.channel(), request, Iframe.response(factory.config(), request)); } else if (Transports.Type.WEBSOCKET.path().equals(path)) { addTransportHandler(new RawWebSocketTransport(factory.config(), factory.create()), ctx); ctx.fireChannelRead(request.retain()); } else { final PathParams sessionPath = matches(path); if (sessionPath.matches()) { handleSession(factory, request, ctx, sessionPath); } else { writeNotFoundResponse(request, ctx); } } }
public static FullHttpResponse response(final SockJsConfig config, final HttpRequest request) throws Exception { final QueryStringDecoder qsd = new QueryStringDecoder(request.getUri()); final String path = qsd.path(); if (!PATH_PATTERN.matcher(path).matches()) { return createResponse(request, NOT_FOUND, copiedBuffer("Not found", UTF_8)); } if (request.headers().contains(HttpHeaders.Names.IF_NONE_MATCH)) { final FullHttpResponse response = createResponse(request, NOT_MODIFIED); response.headers().set(HttpHeaders.Names.SET_COOKIE, "JSESSIONID=dummy; path=/"); return response; } else { final String content = createContent(config.sockJsUrl()); final FullHttpResponse response = createResponse(request, OK, copiedBuffer(content, UTF_8)); response.headers().set(HttpHeaders.Names.CONTENT_TYPE, "text/html; charset=UTF-8"); response.headers().set(HttpHeaders.Names.CACHE_CONTROL, "max-age=31536000, public"); response.headers().set(HttpHeaders.Names.EXPIRES, generateExpires()); final String etag = '\"' + generateMd5(content) + '\"'; response.headers().set(HttpHeaders.Names.ETAG, etag); return response; } }