自助推荐
立即入驻

开源免费的VBWebAPI类库,无需IIS。用VB.NET开发

开源免费的VBWebAPI类库,无需IIS。用VB.NET开发

介绍

 由于VS中没有vb.net的WebAPI模板,自己开发中有时候又需要,因此开发了VBWebAPI这个库(VB.NET和C#都可以用),采用 VB.NET 开发, 无需IIS,一个DLL就🆗 ,学习Java中的jetty容器,采用异步方法(事件) + Handler的方式来实现。WebAPI类可以用来文字通信和文件发送,另外封装了一个WebSocket客户端用来接收发送文字信息。。类库DLL体积非常小,使用也非常简单,方便集成。

 WebAPI示例代码

Module Test
    Private ReadOnly svr As New WebAPI
    Sub Main()
        svr.SimpleToken = "333"  '简单token验证(自动) 如不需要注释掉即可
        'svr.JWT.Enabled = True '启用JWT验证(自动),如不需要注释掉即可。默认加密密码为 mr123456 ,建议修改
        '两个验证同时开启时,JWT验证优先级高于简单token验证

        '添加路由映射
        svr.Routes.Add("/api/v1/hello", AddressOf UserSub)
        'svr.RouteWhiteList.Add("/api/v1/hello") '白名单中的路由无需验证
        svr.StartServer() '启动 WebAPI 服务,默认端口8090 传入参数可修改端口

        Console.WriteLine($"VBWebApi服务已启动!访问地址:http://localhost:8090/api/v1/hello 按任意键退出。")
        Console.ReadKey() '保持窗口运行,直到按下任意键退出 
    End Sub

    Private Async Function UserSub(request As HttpListenerRequest, response As HttpListenerResponse) As Task
        If request.HttpMethod.ToUpper = "GET" Then  '不判断则表示支持所有请求方式
            '处理GET请求
            Await response.WriteAsync("Hello vb!")
        Else
            Await response.WriteAsync("访问方式错误,只支持GET请求!")
        End If
    End Function
End Module

WebSocket示例

Module WebSocketTest

    ' 声明 WebSocket 客户端
    Private wsClient As WebSocketClient

    Sub Main()
        ' 初始化 WebSocket 客户端并指定 WebSocket 服务器地址
        ' wsClient = New WebSocketClient("wss://echo.websocket.org/")
        wsClient = New WebSocketClient("ws://127.0.0.1:8888/")

        ' 订阅事件
        AddHandler wsClient.OnConnected, AddressOf OnConnected
        AddHandler wsClient.OnMessageReceived, AddressOf OnMessageReceived
        AddHandler wsClient.OnDisconnected, AddressOf OnDisconnected
        AddHandler wsClient.OnError, AddressOf OnError

        ' 启动 WebSocket 客户端
        StartWebSocket()

        ' 让用户输入消息并发送
        While True
            Console.WriteLine("请输入消息发送到 WebSocket(输入 'exit' 退出):")
            Dim message As String = Console.ReadLine()
            If message.ToLower() = "exit" Then
                Exit While
            End If
            wsClient.SendMessageAsync(message)
        End While

        ' 停止 WebSocket 客户端连接
        StopWebSocket()

        Console.WriteLine("按任意键退出...")
        Console.ReadKey()
    End Sub

    ' 启动 WebSocket 客户端并连接到服务器
    Private Sub StartWebSocket()
        Console.WriteLine("正在连接到 WebSocket 服务器...")
        wsClient.StartConnect()
    End Sub

    ' 停止 WebSocket 客户端
    Private Sub StopWebSocket()
        Console.WriteLine("正在断开连接...")
        wsClient.StopConnect()
    End Sub

    ' 连接成功事件
    Private Sub OnConnected(sender As Object, e As EventArgs)
        Console.WriteLine("WebSocket 连接成功!")
    End Sub

    ' 收到消息事件
    Private Sub OnMessageReceived(sender As Object, message As String)
        Console.WriteLine()
        Console.WriteLine()
        Console.WriteLine($"收到消息: {message}")
    End Sub

    ' 连接断开事件
    Private Sub OnDisconnected(sender As Object, e As EventArgs)
        Console.WriteLine("WebSocket 连接已断开!")
    End Sub

    ' 错误事件
    Private Sub OnError(sender As Object, e As WebSocketErrorEventArgs)
        Console.WriteLine($"错误! Code: {e.ErrorCode}, Message: {e.ErrorMessage}")
    End Sub
End Module

软件架构

VB.NET + HttpLisener + WebSockets + Handler,基于.Net Standard 2.0因此本库是 跨平台的 。

使用教程

  1. 下载编译好的dll
  2. 在vs里引入dll即可开始使用。

WebAPI服务端

  1. 添加路由 Routes.Add
  2. 添加路由白名单RouteWhiteList.Add。白名单内的路由无需验证授权即可访问。
  3. 支持授权验证,简单token字符串和jwt字符串。Authentication字段
  4. 异步发送文字:responsse.WriteAsync 默认UTF8编码
  5. 异步发送文件:responsse.SendFileAsync 自动设置响应头标识

WebSocket客户端

  1. WebSocket已连接事件:OnConnected
  2. WebSocket收到消息:OnMessageReceived
  3. WebSocket断开连接事件:OnDisconnected
  4. WebSocket错误事件:OnError
  5. 启动WebSocket连接:StartConnect
  6. 关闭WebSocket连接:StopConnect
  7. 发送消息:SendMessageAsync
  8. 发送ping心跳:SendPingAsync 可自定义消息内容
© 版权声明

相关文章