websocket实现Vue 3和Node.js之间的实时消息推送

 更新时间:2024年06月01日 09:35:19   作者:牛掰666  
使用 WebSocket 实现实时消息推送是一种高效的方式,可以在客户端和服务器之间建立长连接,实现低延迟的双向通信,以下是一个简单的示例,展示如何在前端使用 Vue 3 和后端使用 Node.js 搭建一个 WebSocket 实现实时消息推送的应用

使用 WebSocket 实现实时消息推送是一种高效的方式,可以在客户端和服务器之间建立长连接,实现低延迟的双向通信。以下是一个简单的示例,展示如何在前端使用 Vue 3 和后端使用 Node.js 搭建一个 WebSocket 实现实时消息推送的应用。

前端(Vue 3)

1. 创建 Vue 项目

首先,创建一个新的 Vue 3 项目。如果你还没有安装 Vue CLI,可以通过以下命令安装:

npm install -g @vue/cli

创建一个新的 Vue 项目:

vue create websocket-demo
cd websocket-demo

2. 安装 WebSocket 客户端库

在 Vue 项目中,可以使用原生 WebSocket API,也可以使用第三方库。这里我们使用原生 WebSocket API。

3. 实现 WebSocket 客户端

在 src 目录下的 App.vue 文件中,添加以下代码:

<template>
  <div id="app">
    <h1>WebSocket Demo</h1>
    <input v-model="message" @keyup.enter="sendMessage" placeholder="Type a message" />
    <button @click="sendMessage">Send</button>
    <ul>
      <li v-for="(msg, index) in messages" :key="index">{{ msg }}</li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      ws: null,
      message: '',
      messages: []
    };
  },
  mounted() {
    this.connectWebSocket();
  },
  methods: {
    connectWebSocket() {
      this.ws = new WebSocket('ws://localhost:3000');
      this.ws.onmessage = (event) => {
        this.messages.push(event.data);
      };
      this.ws.onopen = () => {
        console.log('Connected to WebSocket server');
      };
      this.ws.onclose = () => {
        console.log('Disconnected from WebSocket server');
      };
    },
    sendMessage() {
      if (this.message !== '') {
        this.ws.send(this.message);
        this.message = '';
      }
    }
  }
};
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  text-align: center;
  margin-top: 60px;
}
</style>

后端(Node.js)

1. 创建 Node.js 项目

创建一个新的目录并初始化一个 Node.js 项目:

mkdir websocket-server
cd websocket-server
npm init -y

2. 安装 WebSocket 库

安装 ws 库,这是一个简单且强大的 WebSocket 库:

npm install ws

3. 实现 WebSocket 服务器

在项目根目录下创建一个 server.js 文件,添加以下代码:

const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 3000 });
wss.on('connection', (ws) => {
  console.log('Client connected');
  ws.on('message', (message) => {
    console.log(`Received message: ${message}`);
    // Broadcast the message to all clients
    wss.clients.forEach((client) => {
      if (client.readyState === WebSocket.OPEN) {
        client.send(message);
      }
    });
  });
  ws.on('close', () => {
    console.log('Client disconnected');
  });
});
console.log('WebSocket server is running on ws://localhost:3000');

运行项目

1. 启动 WebSocket 服务器

在 websocket-server 目录下,运行以下命令启动 WebSocket 服务器:

node server.js

2. 启动 Vue 项目

在 websocket-demo 目录下,运行以下命令启动 Vue 项目:

npm run serve

结果

打开浏览器,访问 http://localhost:8080,你应该会看到一个简单的 WebSocket 演示应用。你可以在输入框中输入消息并发送,消息会通过 WebSocket 服务器广播给所有连接的客户端,实时更新消息列表。

通过这种方式,你可以实现一个简单的实时消息推送系统。当然,这只是一个基本的示例,实际应用中你可能需要处理更多的逻辑和安全问题。

到此这篇关于websocket实现Vue 3和Node.js之间的实时消息推送的文章就介绍到这了,更多相关Vue 3和Node.js的消息推送内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用nodejs、Python写的一个简易HTTP静态文件服务器

    使用nodejs、Python写的一个简易HTTP静态文件服务器

    这篇文章主要介绍了使用nodejs、Python写的一个简易HTTP静态文件服务器,分为nodejs和Python两个版本,用类似淘宝的CSS、JS文件加载方式处理静态文件加载,需要的朋友可以参考下
    2014-07-07
  • Nodejs 获取时间加手机标识的32位标识实现代码

    Nodejs 获取时间加手机标识的32位标识实现代码

    本文给大家分享nodejs获取时间加手机标识的32位标识实现代码,非常不错,具有参考借鉴价值,需要的朋友参考下
    2017-03-03
  • 你或许不知道的一些npm实用技巧

    你或许不知道的一些npm实用技巧

    这篇文章主要给大家介绍了一些你或许不知道的npm实用技巧,分享一些 npm 包管理工具的实用小窍门,希望能够略微提高下前端、Node.js 开发者的生活质量,需要的朋友可以参考下
    2019-07-07
  • NodeJS链接MySql数据库的操作方法

    NodeJS链接MySql数据库的操作方法

    下面小编就为大家带来一篇NodeJS链接MySql数据库的操现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • nodeJs项目在阿里云的简单部署

    nodeJs项目在阿里云的简单部署

    这篇文章主要为大家详细介绍了nodeJs项目在阿里云的简单部署,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • npm install常见错误类型及对应的解决方案

    npm install常见错误类型及对应的解决方案

    在前端开发中,npm是最常用的包管理工具,通过 npm install 命令,开发者可以轻松地安装项目所需的依赖包,然而,在实际使用过程中,npm install 可能会因为各种原因而报错,本文将详细介绍一些常见的 npm install 错误类型、发生原因及其对应的解决方案,需要的朋友可以参考下
    2025-03-03
  • Thinkjs3新手入门之添加一个新的页面

    Thinkjs3新手入门之添加一个新的页面

    Thinkjs 是一个快速、简单的基于MVC和面向对象的轻量级Node.js开发框架,下面这篇文章主要给大家介绍了关于Thinkjs3新手入门之添加一个新的页面的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2017-12-12
  • 轻松开发 Streamable HTTP MCP Server

    轻松开发 Streamable HTTP MCP Server

    本文介绍了MCP协议中stdio和SSE协议的优缺点,以及MCP的最新协议StreamableHTTP的特性,韩老师还分享了如何使用YeomanGeneratorforMCPServer快速开发一个支持StreamableHTTP的MCPServer,并在VSCode中进行调试
    2025-05-05
  • Windows下Node爬虫神器Puppeteer安装记

    Windows下Node爬虫神器Puppeteer安装记

    这篇文章主要介绍了Windows下Node爬虫神器Puppeteer安装记,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Node.js(v16.13.2版本)安装及环境配置的图文教程

    Node.js(v16.13.2版本)安装及环境配置的图文教程

    本文主要介绍了Node.js(v16.13.2版本)安装及环境配置的图文教程,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05

最新评论