当前位置: 代码网 > it编程>前端脚本>Node.js > websocket实现Vue 3和Node.js之间的实时消息推送

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

2024年06月10日 Node.js 我要评论
使用 websocket 实现实时消息推送是一种高效的方式,可以在客户端和服务器之间建立长连接,实现低延迟的双向通信。以下是一个简单的示例,展示如何在前端使用 vue 3 和后端使用 node.js

使用 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的消息推送内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com