websocket在springboot+vue中的使用教程

yizhihongxing

下面是关于使用WebSocket在Spring Boot和Vue中的完整攻略。

WebSocket 在 Spring Boot 和 Vue 中的使用教程

什么是 WebSocket?

WebSocket 是 HTML5 提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单、更便捷,且可以实现低延迟实时通信。

Spring Boot 中使用 WebSocket

在 Spring Boot 中使用 WebSocket 可以结合 Spring WebSocketSockJS 库实现。

在 Spring Boot 中,我们需要在应用程序中添加一个 Web Socket 配置类,该类要实现 WebSocketConfigurer 接口,然后在 registerWebSocketHandlers() 方法中注册一个 WebSocket 处理器。

示例:

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(myHandler(), "/myHandler").setAllowedOrigins("*");
    }

    @Bean
    public WebSocketHandler myHandler() {
        return new MyHandler();
    }

}

其中 MyHandler 是我们自己实现的 WebSocket 处理器。

Vue 中使用 WebSocket

在 Vue 中,我们可以使用 vue-native-websocket 库来实现 WebSocket 的功能。

我们需要在 Vue 应用程序中添加该库,然后在 created() 钩子中创建 WebSocket 连接。

示例:

import VueNativeSock from 'vue-native-websocket'

export default {
  created() {
    this.$options.sockets.onmessage = (data) => {
      console.log(data)
    }

    this.$options.sockets.onerror = (data) => {
      console.error(data)
    }
  },
  sockets: {
    reconnect: true,
    url: 'ws://localhost:8080/myHandler'
  }
}

完整示例

下面是一个完整的示例,演示如何在 Spring Boot 和 Vue 中使用 WebSocket 实现实时数据传输。

Spring Boot 示例中,我们创建了一个简单的 Greeting 类:

public class Greeting {

    private String content;

    public Greeting() {
    }

    public Greeting(String content) {
        this.content = content;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

}

然后我们创建了一个 WebSocket 处理器,它会在连接建立时向客户端发送一条欢迎信息,然后每隔 5 秒向客户端发送一条消息。

public class MyHandler extends WebSocketHandlerAdapter {

    private final Logger logger = LoggerFactory.getLogger(MyHandler.class);
    private static final String[] greetings = {"Hello, ", "Guten Tag, ", "Bonjour, ", "Hola, ", "Ciao, ", "こんにちは, ", "안녕하세요, "};

    private int count = 0;

    @Override
    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
        int randomNum = ThreadLocalRandom.current().nextInt(greetings.length);

        String message = greetings[randomNum] + session.getId() + "!";

        session.sendMessage(new TextMessage(message));

        Runnable task = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    try {
                        Thread.sleep(5000);

                        String message = "You have received new message #" + count++;

                        session.sendMessage(new TextMessage(message));

                    } catch (IOException e) {
                        e.printStackTrace();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };

        new Thread(task).start();

        logger.info("WebSocket连接已建立:{}", session.getId());

        super.afterConnectionEstablished(session);
    }

}

Vue 示例中,我们创建了一个简单的组件,它会在创建时创建一个 WebSocket 连接,并在接收到消息时将消息显示在页面上。

<template>
  <div class="message">
    <div>{{ message }}</div>
  </div>
</template>

<script>
import VueNativeSock from 'vue-native-websocket'

export default {
  created() {
    this.$options.sockets.onmessage = (data) => {
      console.log(data)
      this.message = data.data
    }

    this.$options.sockets.onerror = (data) => {
      console.error(data)
    }
  },
  data() {
    return {
      message: ''
    }
  },
  sockets: {
    reconnect: true,
    url: 'ws://localhost:8080/myHandler'
  }
}
</script>

最后我们在一个简单的页面中引入该组件:

<template>
  <div class="container">
    <h1>WebSocket 示例</h1>
    <message></message>
  </div>
</template>

<script>
import Message from './components/Message'

export default {
  components: {
    Message
  }
}
</script>

现在我们启动应用程序,并在浏览器中打开该页面,就可以看到实时消息的传递了。

总结

本文介绍了如何在 Spring Boot 和 Vue 中使用 WebSocket 实现实时数据传输。我们使用了 Spring WebSocket 和 SockJS 库在 Spring Boot 中创建 WebSocket 处理器,然后在 Vue 中使用 vue-native-websocket 库来创建 WebSocket 连接。最后,我们演示了一个完整的示例,它会每隔 5 秒向客户端发送一条消息,然后在客户端中将消息显示在页面上。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:websocket在springboot+vue中的使用教程 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • vue watch监听方法总结

    Vue Watch监听方法总结 在Vue应用中,我们经常需要对数据进行监听,当数据发生改变时,我们需要对其做出相应的操作,这时我们可以使用Vue提供的watch监听方法。本文将对Vue的watch监听方法进行详细讲解,并通过示例说明。 Vue Watch监听方法用法 Vue的watch监听方法主要是用于监听数据的变化。当监听的数据发生变化时,Vue会自动调用…

    Vue 2023年5月28日
    00
  • Vue项目的网络请求代理到封装步骤详解

    下面我将为您讲解“Vue项目的网络请求代理到封装步骤详解”的完整攻略。 一、配置跨域请求代理 在 Vue 项目中,我们要请求后端资源,遇到运行时跨域问题,通常有以下几种解决方案: 1. 使用 JSONP JSONP 通过 script 标签的 src 属性请求服务器获取数据,由于 script 标签的 src 属性不受同源策略限制,所以可以跨域请求。但是 J…

    Vue 2023年5月27日
    00
  • Vue发布项目实例讲解

    下面就为大家详细介绍一下Vue发布项目的完整攻略。 1. 打包项目 在Vue项目开发完成后,需要将项目进行打包。Vue提供了一个命令行工具Vue CLI,可以使用Vue CLI将项目进行打包。 首先需要安装Vue CLI,可以在命令行中输入以下命令进行安装: npm install -g @vue/cli 安装完成后,在命令行中进入到项目根目录,使用以下命令…

    Vue 2023年5月28日
    00
  • vue中定时器setInterval的使用及说明

    关于“vue中定时器setInterval的使用及说明”的完整攻略,具体内容如下: 概述 JavaScript中的setInterval函数可以用来设置定时器,定时执行一些操作。在Vue.js中,我们也可以使用setInterval函数来实现类似的定时操作。本篇攻略主要介绍如何在Vue.js中使用setInterval函数。 使用方法 在Vue.js中,我们…

    Vue 2023年5月29日
    00
  • vue.js页面加载执行created,mounted的先后顺序说明

    在Vue.js中,组件的生命周期包括如下几个阶段:创建(creation)、挂载(mounting)、更新(updating)和销毁(destroying)。其中,created和mounted属于创建和挂载阶段,下面详细介绍它们执行的先后顺序。 首先,created钩子函数会在组件实例创建之后立即被调用,此时模板还未渲染成html,因此无法访问到DOM元素…

    Vue 2023年5月28日
    00
  • Vue-CLI多页分目录打包的步骤记录

    下面就来详细讲解一下“Vue-CLI多页分目录打包的步骤记录”的完整攻略。 Vue-CLI多页分目录打包的背景 在Vue的开发中,通常会使用到Vue-CLI脚手架工具来快速创建一个Vue项目,但默认情况下Vue-CLI创建的是单页应用,而有些场景需要创建多页应用。多页应用指的是一个网站包含多个入口页面,并且每个入口页面处理不同的业务逻辑,这种情况下需要使用多…

    Vue 2023年5月28日
    00
  • Vue中遍历数组的新方法实例详解

    下面我就为您详细讲解“Vue中遍历数组的新方法实例详解”。 介绍 在Vue 2.6.0版本以后,新增了一个数组方法v-for,它主要用于遍历一个数组并渲染每个数组元素。 v-for能够将一个数组映射为一组元素,并为每个元素执行一次模板,因此它的应用场景非常广泛,尤其在将复杂数据渲染到界面上时,更是体现了它的优势。 下面就重点介绍一下v-for在其中的应用。 …

    Vue 2023年5月28日
    00
  • typescript在vue中的入门案例代码demo

    下面是关于“TypeScript在Vue中的入门案例代码demo”的完整攻略: 什么是TypeScript TypeScript是一个开源的编程语言,它是JavaScript的超集,具有类型和对象导向特性,开发者可以使用它来开发大型的Web应用或Node.js应用。它的语法看起来像JavaScript,但是针对开发体验和代码维护性做了很多改进。 如何在Vue…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部