diff --git a/net/src/test/java/com/zfoo/net/core/http/HttpServerController.java b/net/src/test/java/com/zfoo/net/core/http/HttpServerController.java new file mode 100644 index 00000000..de89574d --- /dev/null +++ b/net/src/test/java/com/zfoo/net/core/http/HttpServerController.java @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2020 The zfoo Authors + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and limitations under the License. + */ + +package com.zfoo.net.core.http; + +import com.zfoo.net.NetContext; +import com.zfoo.net.packet.http.HttpHelloRequest; +import com.zfoo.net.packet.http.HttpHelloResponse; +import com.zfoo.net.router.attachment.HttpAttachment; +import com.zfoo.net.router.receiver.PacketReceiver; +import com.zfoo.net.session.model.Session; +import com.zfoo.protocol.util.JsonUtils; +import io.netty.handler.codec.http.HttpResponseStatus; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +/** + * @author godotg + * @version 3.0 + */ +@Component +public class HttpServerController { + + private static final Logger logger = LoggerFactory.getLogger(HttpServerController.class); + + @PacketReceiver + public void atHttpHelloRequest(Session session, HttpHelloRequest request, HttpAttachment attachment) { + logger.info("receive [packet:{}] from client", JsonUtils.object2String(request)); + + var response = new HttpHelloResponse(); + response.setMessage("Hello, this is the http server!"); + + attachment.setHttpResponseStatus(HttpResponseStatus.OK); + + NetContext.getRouter().send(session, response, attachment); + } + +} diff --git a/net/src/test/java/com/zfoo/net/core/http/HttpServerTest.java b/net/src/test/java/com/zfoo/net/core/http/HttpServerTest.java new file mode 100644 index 00000000..bef4c2c9 --- /dev/null +++ b/net/src/test/java/com/zfoo/net/core/http/HttpServerTest.java @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2020 The zfoo Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and limitations under the License. + */ + +package com.zfoo.net.core.http; + +import com.zfoo.net.packet.http.HttpHelloRequest; +import com.zfoo.net.packet.model.DecodedPacketInfo; +import com.zfoo.net.router.attachment.HttpAttachment; +import com.zfoo.protocol.exception.RunException; +import com.zfoo.protocol.util.StringUtils; +import com.zfoo.util.ThreadUtils; +import com.zfoo.util.net.HostAndPort; +import io.netty.handler.codec.http.FullHttpRequest; +import org.junit.Ignore; +import org.junit.Test; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import java.util.function.Function; + +/** + * @author godotg + * @version 3.0 + */ +@Ignore +public class HttpServerTest { + + /** + * 访问下面这个网址: + *
+ * http://127.0.0.1:9000/hello
+ */
+ @Test
+ public void startServer() {
+ var context = new ClassPathXmlApplicationContext("config.xml");
+
+ var server = new HttpServer(HostAndPort.valueOf("127.0.0.1:9000"), new Function