当前位置: 首页 > 软件库 > 程序开发 > 网络工具包 >

Magician

基于 Netty 开发的小型 Http 服务包
授权协议 MIT
开发语言 Java
所属分类 程序开发、 网络工具包
软件类型 开源软件
地区 国产
投 递 者 尹兴生
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Magician 是一个基于Netty开发的小型 HTTP服务包,可以非常方便的启动一个http服务,同时也支持WebSocket,注解式Handler配置

运行环境

JDK8+

文档

https://magician-io.com

示例

导入依赖

<dependency>
    <groupId>com.github.yuyenews</groupId>
    <artifactId>Magician</artifactId>
    <version>2.0.7</version>
</dependency>

<!-- 这是日志包,必须有,不然控制台看不到东西,支持任意可以看slf4j桥接的日志包 -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-jdk14</artifactId>
    <version>1.7.12</version>
</dependency>

创建http服务

创建一个 Handler

@HttpHandler(path="/")
public class DemoHandler implements HttpBaseHandler {

    @Override
    public void request(MagicianRequest magicianRequest, MagicianResponse response) {
        // response data
        magicianRequest.getResponse()
                .sendJson(200, "{'status':'ok'}");
    }
}

创建http服务

Magician.createHttp()
                    .scan("handler所在的包名")
                    .bind(8080);

创建http服务,监听多端口

HttpServer httpServer = Magician.createHttp()
           .setConfig(
                MagicianConfig.create().setNumberOfPorts(2)
           )
           .scan("com.magician.test2");

httpServer.bind(8080);
httpServer.bind(8081);

创建 WebSocket

@WebSocketHandler(path = "/websocket")
public class DemoSocketHandler implements WebSocketBaseHandler {
   
    @Override
    public void onOpen(WebSocketSession webSocketSession) {
     
    }
   
    @Override
    public void onClose(WebSocketSession webSocketSession) {
        
    }

    @Override
    public void onMessage(String message, WebSocketSession webSocketSession) {

    }
}

更多组件

可以利用这些组件方便的开发web项目

Magician-Route | Magician-JDBC

  • 首先不同的 1 1 1操作之间是互不影响的,因此不妨考虑只有一个 1 1 1操作的情形。对于相邻的 2 2 2操作显然可以合并。然后对于一个 3 3 3操作,可以看成是把之前的操作序列复制了一遍,那么相当于把原来的 x x x序列复制一遍到最前面,然后对于后一半 x x x序列全部减去 δ \delta δ,并且 δ \delta δ乘以 2 2 2,因此 3 3 3操作不会超过 log ⁡ \l

  • 英文原著 01 The magician’s Nephew 读书记录 版本:HarperCollins Publishers出版 1994年 这本书是我采用透析法完整读完的第一本英文原著,在Ipad上看的epub的电子书,全书146页,利用三个下午的时间,花了7.5个小时完成了阅读。 【方法】透析法 原则 每两页只查1个生词,2-1原则(我的是电子屏,但是坚持没两页查一个单词,但是也实行了连续屏不

 相关资料
  • 关于netty的第二个问题。我们只是从它开始。我们有一个设计,我们需要使用 <罢工> 具有长轮询的HTTP HTTP流。我们估计5k-50k连接的用户打开连接。我们知道tomcat不会处理,所以我们看着netty完成任务。 设计应该足够简单,但我们不能使用websocket(我们希望在netty上使用hornetQ,并提供websocket/stomp支持),但我们不能。 因此,基本上,我们将在连

  • 问题 你想在网络上创建一个 HTTP 服务器。在这个方法中,我们将逐步从最小的服务器成为一个功能键值存储。 解决方案 我们将使用 node.js HTTP 库并在 Coffeescript 中创建最简单的 web 服务器。 开始 'hi\n' 我们可以通过导入 node.js HTTP 模块开始。这会包含 createServer ,一个简单的请求处理程序返回 HTTP 服务器。我们可以使用该服务

  • 我不确定如何处理这个问题,http响应状态取决于我需要阅读的主体。我有这样的想法: 但为了获得阅读正文所需的状态,我看不到任何使用发布者提供的值的选项。我如何使其能够调用上面的方法,并在创建NetYoutBound时使用该状态

  • 我在我的项目中使用微服务架构。对于服务间通信,我使用消息队列NATS。我写了一个网关,处理所有超文本传输协议请求,并将其放入队列。所有终端服务都订阅到这个队列。 在endpoint服务中,我使用基于Netty IO的Xitrum。当我从队列中得到请求时,我将其反序列化为FullHttpRequest。但我不知道如何将它发送到我的netty服务器,它可以根据业务逻辑处理它(例如,不使用可以将它发送到

  • 我需要一些帮助来理解如何编写HTTP路由器,它将HTTP标头识别为路由标准。我找到了链接https://github.com/cgbystrom/netty-tools/blob/master/src/main/java/se/cgbystrom/netty/http/router/RouterHandler.java它似乎自己做路由。但是现在不清楚,如何 连接到另一个HTTP服务器 发送HTTP

  • 我们在Java小程序中使用Netty与tomcat服务器通信。这很好用。 我可以使用下面发布的helper类获取代理信息。 我的问题是如何向Netty提供代理服务器信息? 更多信息: 我们有一个用户在Internet Explorer中配置了代理服务器。网页和Java小程序被提供,但是当Netty试图连接时,它绕过代理服务器并进行直接连接;这失败了,因为用户设置了防火墙来防止直接连接——所有客户端

  • 我有一个基于UDP网络的服务器。它有一个流水线,我在其中重写方法。 我需要时不时地写些信息。我只能通过使用中的套接字信息和中的通道来实现。为了能够重用这些信息,我保留在一个静态映射中。 我做错什么了吗? 有没有比将通道和远程地址保留在某个成员中更好的回写方法?

  • braft并不能直接被任何client访问, 本文主要是说明一个能访问braft节点的client需要那些要素。 Example client side code of Counter 总体流程 要访问braft的主节点,需要做这么一些事情: 需要知道这个复制组有哪些节点, 这个可以通过配置列表,记录在dns,或者提供某些naming service如集群的master,redis, zookee