> parameters) {
// 根据 uri,headers,parameters 生成 EventDTO
// 查询缓存或者数据库构建一个 EventDTO
if (uri.equals("/events2")) {
return new EventDTO("update", "当前update时间:" + DateUtil.now());
}
return new EventDTO("当前时间:" + DateUtil.now());
}
}
```
上面的 EventDTO 是一个简单的事件对象,包含协议里面的所有字段,默认构造器即可,表示传输message事件,
如果需要自定义事件,可以参考`new EventDTO("update", "当前update时间:" + DateUtil.now());`
- 接口中的参数 uri 是当前请求的 endpoint
- headers 是当前GET请求的 headers 内容,例如 `Accept-Encoding: gzip`
- parameters 是当前GET请求的 parameters 内容, 例如 `/sse?id=123` 中的 id=123
- generateEvent 方法, 返回值 EventDTO 是当前事件的内容,可以包含多个 data,例如:
- connectAuth 方法,用于验证客户端是否允许连接,返回 true 表示允许连接,返回 false 表示不允许连接。
# 启动服务
控制台日志信息如下:
```shell
DEBUG 3192 -- [ main] c.guzt.starter.sse.service.SseServer : SSE服务初始化完毕
DEBUG 3192 -- [MyTaskExecutorThreadPool_1] c.guzt.starter.sse.service.SseServer : SSE服务正在启动...
DEBUG 3192 -- [MyTaskExecutorThreadPool_1] c.guzt.starter.sse.service.SseServer : SSE服务启动完成,绑定端口:8849
```
表示SSE服务启动成功
# 验证服务
给定一个前端页面代码如下:
可以指定一个 endpoint,例如:`http://localhost:8849/sse`
可以指定一个事件名称,例如:`update`,默认为 `message`
可以开启/关闭连接,默认需要手动点击开启/关闭连接
```html
SSE Example
SSE Example
请点击 [开启 EventSource] 按钮开启 EventSource。
```