编程 使用Vue3和WebSocket创建一个简单的实时聊天应用

2024-11-17 20:49:57 +0800 CST views 553

使用Vue 3创建实时聊天应用,使用WebSocket

在这篇博客中,我们将创建一个简单的实时聊天应用,使用 Vue 3 的 setup 语法糖以及 WebSocket 技术。通过这个示例,您可以更好地理解 Vue 3 的新特性以及 WebSocket 的基本用法。

概述

我们的应用将允许用户输入消息,并通过 WebSocket 将消息发送到服务器,服务器则会广播收到的消息给所有连接的客户端。我们将集中精力实现以下功能:

  1. 连接到 WebSocket 服务器
  2. 发送聊天消息
  3. 接收并显示来自其他用户的消息

创建 Vue 3 项目

首先,您需要在本地创建一个 Vue 3 项目。可以使用 Vue CLI 来快速开始:

npm install -g @vue/cli
vue create chat-app
cd chat-app

在项目中安装所需的依赖:

npm install

创建 WebSocket 服务器(可选)

为了测试我们的应用,您可能需要一个 WebSocket 服务器。我们可以使用以下简单的 Node.js 服务器来处理 WebSocket 连接。

// server.js
const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', (ws) => {
    ws.on('message', (message) => {
        // 广播到所有客户端
        wss.clients.forEach((client) => {
            if (client.readyState === WebSocket.OPEN) {
                client.send(message);
            }
        });
    });
});

console.log('WebSocket server is running on ws://localhost:8080');

运行这个服务器:

node server.js

实现 Vue 3 客户端

接下来,我们来实现 Vue 3 客户端。这是我们的主要 Vue 组件:

<template>
  <div class="chat-app">
    <h1>实时聊天应用</h1>
    <div class="messages">
      <div v-for="(msg, index) in messages" :key="index">{{ msg }}</div>
    </div>
    <input v-model="message" @keyup.enter="sendMessage" placeholder="输入消息并按 Enter 发送" />
  </div>
</template>

<script>
import { ref, onMounted, onBeforeUnmount } from 'vue';

export default {
  setup() {
    const messages = ref([]);
    const message = ref('');
    let ws;

    const connectWebSocket = () => {
      ws = new WebSocket('ws://localhost:8080');

      ws.onmessage = (event) => {
        messages.value.push(event.data);
      };

      ws.onopen = () => {
        console.log('WebSocket connection established');
      };

      ws.onclose = () => {
        console.log('WebSocket connection closed');
      };
    };

    const sendMessage = () => {
      if (message.value.trim()) {
        ws.send(message.value);
        message.value = '';
      }
    };

    onMounted(() => {
      connectWebSocket();
    });

    onBeforeUnmount(() => {
      ws.close();
    });

    return {
      messages,
      message,
      sendMessage,
    };
  },
};
</script>

<style scoped>
.chat-app {
  width: 400px;
  margin: auto;
  border: 1px solid #ccc;
  padding: 20px;
  border-radius: 5px;
}
.messages {
  height: 300px;
  overflow-y: auto;
  margin-bottom: 10px;
}
input {
  width: 100%;
  padding: 10px;
}
</style>

总结

您现在已经成功创建了一个基于 Vue 3 和 WebSocket 的实时聊天应用。从用户界面到消息的发送和接收,所有部分都是实时的。您可以根据需要添加更多的功能,比如用户身份识别、消息时间戳、使用 Vuex 管理状态。


通过本教程,您掌握了Vue 3 和 WebSocket 的基本结合使用方式,期待您能在此基础上实现更加复杂的实时应用功能。

复制全文 生成海报 前端开发 实时应用 Web开发

推荐文章

Dropzone.js实现文件拖放上传功能
2024-11-18 18:28:02 +0800 CST
java MySQL如何获取唯一订单编号?
2024-11-18 18:51:44 +0800 CST
php腾讯云发送短信
2024-11-18 13:50:11 +0800 CST
html一些比较人使用的技巧和代码
2024-11-17 05:05:01 +0800 CST
API 管理系统售卖系统
2024-11-19 08:54:18 +0800 CST
Go语言中的mysql数据库操作指南
2024-11-19 03:00:22 +0800 CST
百度开源压测工具 dperf
2024-11-18 16:50:58 +0800 CST
介绍 Vue 3 中的新的 `emits` 选项
2024-11-17 04:45:50 +0800 CST
Golang 几种使用 Channel 的错误姿势
2024-11-19 01:42:18 +0800 CST
Golang Sync.Once 使用与原理
2024-11-17 03:53:42 +0800 CST
filecmp,一个Python中非常有用的库
2024-11-19 03:23:11 +0800 CST
Golang 随机公平库 satmihir/fair
2024-11-19 03:28:37 +0800 CST
Vue 中如何处理父子组件通信?
2024-11-17 04:35:13 +0800 CST
Go 中的单例模式
2024-11-17 21:23:29 +0800 CST
Rust 并发执行异步操作
2024-11-19 08:16:42 +0800 CST
Vue3中的Store模式有哪些改进?
2024-11-18 11:47:53 +0800 CST
npm速度过慢的解决办法
2024-11-19 10:10:39 +0800 CST
Vue3中如何处理SEO优化?
2024-11-17 08:01:47 +0800 CST
程序员茄子在线接单