Skip to content

Erupt WebSocket 实时交互

erupt-websocket 提供 WebSocket 实时通信能力,可用于实时数据推送、在线通知、进度反馈等场景,是 erupt-notice 通知模块的底层传输机制。

引入方式

xml
<dependency>
  <groupId>xyz.erupt</groupId>
  <artifactId>erupt-websocket</artifactId>
  <version>${erupt.version}</version>
</dependency>

实时通知演示

引入 erupt-websocket 后,配合 erupt-notice 可实现站内实时消息推送:

实时进度推送

在处理耗时操作(如 Excel 导入、批量处理)时,可通过 WebSocket 实时推送进度信息:

使用场景

  • erupt-notice:通知模块的底层传输机制
  • 进度反馈:Excel 批量导入、耗时任务处理进度展示
  • 实时数据推送:监控数据、日志流式输出
  • 操作结果反馈:异步操作完成后实时通知前端

在 DataProxy 中使用

1.12.17+ 版本支持在 DataProxy 中通过 WebSocket 向当前操作用户推送消息:

java
import xyz.erupt.webscoket.service.EruptWebSocketService;

@Service
public class MyDataProxy implements DataProxy<MyEntity> {

    @Resource
    private EruptWebSocketService eruptWebSocketService;

    @Override
    public void afterAdd(MyEntity entity) {
        // 向当前用户推送一条消息提示
        eruptWebSocketService.sendJsMessage("操作成功,数据已处理");
        // 或者推送一条通知(标题 + 内容)
        eruptWebSocketService.sendJsNotify("处理完成", "数据已处理");
    }
}

EruptWebSocketService 的常用方法:

方法说明
sendJsMessage(String message)向当前用户推送消息提示
sendJsNotify(String title, String message)向当前用户推送通知
send(SocketCommand command, T data)向当前用户会话发送自定义指令与数据
send(EruptWsSessionModel session, SocketCommand command, T data)向指定会话发送自定义指令与数据
getCurrentSession() / getAllSession()获取当前用户会话 / 全部在线会话

包名注意

该类所在包为 xyz.erupt.webscoket.service(历史拼写如此,并非 websocket),import 时请勿写错。

前端能力扩展

通过 WebSocket 推送消息后,可在前端配合消息 & 弹窗组件实现更丰富的交互效果,例如弹出通知、展示进度条、触发确认框等。

贡献者

The avatar of contributor named as YuePeng YuePeng
The avatar of contributor named as Claude Opus 5 (1M context) Claude Opus 5 (1M context)

页面历史

Released under the Apache-2.0 License.