Skip to content

VBMAN SSE(Server-Sent Events)服务器推送示例 ​

概述 ​

这个示例展示了如何使用 VBMAN 框架实现 SSE(Server-Sent Events)服务器推送功能,实现服务器向客户端的实时数据推送。示例包含定时推送和手动推送两种模式。

项目结构 ​

下载源码 [ 注意:重新到bin目录注册 DLL 文件 ]

代码请到首页下载VBMAN 项目,解压后,打开包含所有DEMO项目。

SSE/
  ├── src/                # 服务器端项目
  │   ├── Form1.frm      # 主窗体
  │   ├── bMes.cls       # 消息处理类
  │   └── VBMAN_DEMO_SSE.vbp # 项目文件
  └── www/               # 前端页面
      └── Client.html    # SSE客户端页面

核心代码解析 ​

1. 服务器端配置(Form1.frm) ​

vb
Dim HttpServer As New VBMANLIB.cHttpServer

Private Sub Form_Load()
    With HttpServer
        .Router.Reg "Mes", New bMes        '注册消息处理类
        .Router.AutoRoute = True           '开启自动路由
        .CrossDomain.Enable = True         '允许跨域访问
        
        '启用 SSE 功能
        .SSE.Start
        
        '启动 Web 服务器
        .WebRoot(App.Path & "\..\www").Start 82
    End With
    Shell "explorer http://127.0.0.1:82/Client.html"
End Sub

'定时器推送
Private Sub Timer1_Timer()
    HttpServer.SSE.SendPack "timer", Now()
End Sub

'手动推送
Private Sub Command1_Click()
    HttpServer.SSE.SendPack "test", Text2.Text
End Sub

2. 消息处理类(bMes.cls) ​

vb
Public Sub Printer(ctx As VBMANLIB.cHttpServerContext)
    '获取客户端发送的数据
    Dim zs As String: zs = ctx.Request.Json.Root("data")(1)("name")
    Dim ls As String: ls = ctx.Request.Json.Root("data")(2)("name")
    
    '将数据显示在界面上
    Form1.Text1.Text = ctx.Request.Json.Encode(, 2)
    
    '响应客户端
    ctx.Response.Text "处理成功: " & Now()
End Sub

3. 客户端实现(Client.html) ​

html
<script>
// 创建 SSE 连接
var source = new EventSource('/sse');

// 监听服务器消息
source.addEventListener('timer', function(e) {
    console.log('定时消息:', e.data);
});

source.addEventListener('test', function(e) {
    console.log('测试消息:', e.data);
});

// 连接成功回调
source.onopen = function() {
    console.log('SSE连接已建立');
};

// 错误处理
source.onerror = function(e) {
    console.log('SSE连接错误:', e);
};
</script>

功能说明 ​

  1. SSE服务端功能

    • 支持多客户端连接
    • 支持定时推送
    • 支持手动推送
    • 支持自定义事件类型
  2. 消息推送特性

    • 自动重连机制
    • 断线重连
    • 事件分类推送
    • 跨域支持
  3. 客户端功能

    • 原生 SSE 支持
    • 事件监听机制
    • 连接状态监控
    • 错误处理

技术要点 ​

  1. SSE 协议实现
  2. 实时数据推送
  3. 长连接管理
  4. 事件驱动模型

应用场景 ​

  1. 实时数据监控
  2. 消息通知系统
  3. 实时报表更新
  4. 日志实时显示

扩展建议 ​

  1. 添加消息过滤机制
  2. 实现消息压缩
  3. 添加消息优先级
  4. 实现消息确认机制
  5. 添加负载均衡支持

VB6及其LOGO版权为微软公司所有