package test.codec.http2; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import com.firefly.codec.http2.model.HttpURI; import com.firefly.codec.http2.model.MetaData; import com.firefly.codec.http2.stream.HTTP2Configuration; import com.firefly.codec.http2.stream.HTTPConnection; import com.firefly.codec.http2.stream.HTTPOutputStream; import com.firefly.server.http2.HTTP2Server; import com.firefly.server.http2.ServerHTTPHandler; import com.firefly.server.http2.ServerSessionListener; import com.firefly.utils.io.BufferUtils; public class HTTP1ServerChunkOutputDemo3 { public static void main(String[] args) { final HTTP2Configuration http2Configuration = new HTTP2Configuration(); http2Configuration.getTcpConfiguration().setTimeout(10 * 60 * 1000); HTTP2Server server = new HTTP2Server("localhost", 6678, http2Configuration, new ServerSessionListener.Adapter(), new ServerHTTPHandler.Adapter() { @Override public void earlyEOF(MetaData.Request request, MetaData.Response response, HTTPOutputStream output, HTTPConnection connection) { System.out.println("the server connection " + connection.getSessionId() + " is early EOF"); } @Override public void badMessage(int status, String reason, MetaData.Request request, MetaData.Response response, HTTPOutputStream output, HTTPConnection connection) { System.out.println("the server received a bad message, " + status + "|" + reason); try { connection.close(); } catch (IOException e) { e.printStackTrace(); } } @Override public boolean messageComplete(MetaData.Request request, MetaData.Response response, HTTPOutputStream outputStream, HTTPConnection connection) { HttpURI uri = request.getURI(); System.out.println("current path is " + uri.getPath()); System.out.println("current http headers are " + request.getFields()); response.setStatus(200); List<ByteBuffer> list = new ArrayList<>(); list.add(BufferUtils.toBuffer("hello the server demo ", StandardCharsets.UTF_8)); list.add(BufferUtils.toBuffer("test chunk 1 ", StandardCharsets.UTF_8)); list.add(BufferUtils.toBuffer("test chunk 2 ", StandardCharsets.UTF_8)); list.add(BufferUtils.toBuffer("中文的内容,哈哈 ", StandardCharsets.UTF_8)); list.add(BufferUtils.toBuffer("靠!!! ", StandardCharsets.UTF_8)); try (HTTPOutputStream output = outputStream) { for (ByteBuffer buffer : list) { output.write(buffer); } } catch (IOException e) { e.printStackTrace(); } return true; } }); server.start(); } }