websocket 传输大文件 参考官方配置 解决方法

websocket 大文件传输问题解决办法

环境为spring boot 2+

网上找了很多博客写法 其中一位写的比较详细的

使用websocket进行断点续传文件

但是其中的写法使用 好像并没有用

  /**
     * 当websocket连接成功的时候就是准备上传文件的时候
     * @param session
     */
    @OnOpen
    public void onOpen(Session session) {
        //扩大一次性上传的最大数值
        session.setMaxBinaryMessageBufferSize(BreakpointUploadConfig.blobSize+8);
    }

不过这种思路确实可以:把大文件切分为小文件传输,因为websocket 是长连接因此多次传输对效率确实也没有很大的影响,不过还是觉得不官方
因此,查看官方介绍:spring boot 官方文档 websocket 配置

可以通过配置 ServletServerContainerFactoryBean

 @Bean
    public ServletServerContainerFactoryBean createWebSocketContainer() {
        ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean();
        // 可以自由设定大小
        container.setMaxTextMessageBufferSize(81920);
        container.setMaxBinaryMessageBufferSize(1024*1024*20);
        return container;
    }

这样即达到了自由设定传输大小,如http 一般

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
若依是一个基于Vue3的开发框架,它支持使用Vue.js提供的插件vue-native-websocket来连接和通信WebSocket,实现报警弹窗显示的具体步骤如下: 1. 安装和引入vue-native-websocket插件 使用npm或yarn安装vue-native-websocket插件,然后在Vue3项目的入口文件main.js中引入插件并进行全局配置。具体代码如下: ``` npm install vue-native-websocket ``` ```javascript // main.js import { createApp } from 'vue' import App from './App.vue' import VueNativeSock from 'vue-native-websocket' const app = createApp(App) app.use(VueNativeSock, 'ws://localhost:8080/ws', { reconnection: true, reconnectionAttempts: 5, reconnectionDelay: 3000 }) app.mount('#app') ``` 2. 在Vue3中创建报警弹窗组件 参考上面的回答,创建一个名为Alarm的Vue3组件,用于显示报警信息。 3. 监听WebSocket事件 在Vue3的父组件中监听WebSocket事件,接收来自WebSocket服务器的报警信息,并将信息传递给Alarm组件进行显示。具体代码如下: ```javascript <template> <div> <Alarm :title="title" :content="content" :show="show" @close="show = false"></Alarm> </div> </template> <script> import Alarm from './components/Alarm.vue' export default { name: 'App', components: { Alarm }, data() { return { title: '警报', content: '', show: false } }, mounted() { this.$options.sockets.onmessage = (event) => { // 接收到WebSocket服务器推送的信息 const data = JSON.parse(event.data) this.content = data.content this.show = true } } } </script> ``` 4. 在WebSocket服务器中推送报警信息 在WebSocket服务器中,根据具体业务逻辑,将报警信息推送给前端,前端通过WebSocket监听事件接收信息。WebSocket服务器端的代码示例: ```javascript const WebSocket = require('ws') const wss = new WebSocket.Server({ port: 8080 }) wss.on('connection', (ws) => { console.log('WebSocket connection established') // 模拟推送报警信息 setInterval(() => { const data = { content: '这是一条警报信息!' } ws.send(JSON.stringify(data)) }, 5000) }) ``` 综上所述,使用若依和Vue3实现报警弹窗的步骤与使用Vue3相同,具体区别在于使用若依时需要在入口文件中引入若依的相关配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木秀林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值