介绍
由于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因此本库是 跨平台的 。
使用教程
- 下载编译好的dll
- 在vs里引入dll即可开始使用。
WebAPI服务端
- 添加路由
Routes.Add
- 添加路由白名单
RouteWhiteList.Add
。白名单内的路由无需验证授权即可访问。 - 支持授权验证,简单token字符串和jwt字符串。
Authentication
字段 - 异步发送文字:
responsse.WriteAsync
默认UTF8编码 - 异步发送文件:
responsse.SendFileAsync
自动设置响应头标识
WebSocket客户端
- WebSocket已连接事件:
OnConnected
- WebSocket收到消息:
OnMessageReceived
- WebSocket断开连接事件:
OnDisconnected
- WebSocket错误事件:
OnError
- 启动WebSocket连接:
StartConnect
- 关闭WebSocket连接:
StopConnect
- 发送消息:
SendMessageAsync
- 发送ping心跳:
SendPingAsync
可自定义消息内容
© 版权声明
文章版权归作者所有,未经允许请勿转载。