广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue+express+Socket实现聊天功能
  • 141
分享到

Vue+express+Socket实现聊天功能

2024-04-02 19:04:59 141人浏览 泡泡鱼
摘要

本文实例为大家分享了Vue+express+Socket实现聊天功能的具体代码,供大家参考,具体内容如下 实现聊天功能 具体功能 只是为了实现功能,不对界面进行美化 1、输入消息点击

本文实例为大家分享了Vue+express+Socket实现聊天功能的具体代码,供大家参考,具体内容如下

实现聊天功能

具体功能

只是为了实现功能,不对界面进行美化

1、输入消息点击发送所有用户可以在下方收到消息

2、输入userid后点击连接,可以连接对应的聊天,另外一个界面输入刚刚那个页面的userid后再输入内容点击发送给指定的人,则刚才那个页面可以打印输出,而其他页面不会收到,实现私聊的功能

3、没有具体实现私聊的内容显示,但是接收发送消息都可以实现,要实现私聊的内容显示可以再添加一个私聊页面

界面截图

项目准备

只对socket准备进行介绍,Vue和express的搭建不进行介绍

前端 socket

安装


npm i vue-socket.io --save

导入


import VueSocketIO from 'vue-socket.io'

后台socket

安装


npm i socket.io --save

导入

在express-generator生产的bin/www文件夹中加入


var io = require('socket.io')(server)'

io.on('connection',  (socket) => {
  socket.on('demining',  (data) => {
    console.log(data);
  });
});

具体截图如下:

项目实现

Vue代码

html代码


<div class="home">
    userid: <input type="text" v-model="userid">
    昵称:<input type="text" v-model="name">
    消息:<input type="text" v-model="msg" />
    <button @click="send">发送</button>
    <button @click="join">连接</button>
    <button @click="sendmsg">发送给指定的人</button>

    <ul>
      <li v-for="(item,index) in chatList" :key="item.name + index">
        {{ item.name }}说:{{ item.msg }}
      </li>
    </ul>
</div>

js代码


export default {
  name: "Home",
  data() {
    return {
      users: [],
      msg: "",
      chatList: [],
      name: '',
      userid: ''
    };
  },
  sockets: {
    // 连接后台socket
    connect() {
      console.log('socket connected');
    },
    // 用户后台调用,添加数据
    sendMessage(data) {
      console.log(data);
      this.chatList.push(data)
    },
    // 用户后台调用,打印数据
    receivemsg(data) {
      console.log('receivemsg');
      console.log(data);
    }
  },
  methods: {
    // 发送消息给后台
    send() {
      // 使用emit调用后台的socket中的message方法
      this.$socket.emit("message", {
        userid: 100,
        name: this.name,
        msg: this.msg
      });
    },
    // 建立用户连接
    join() {
      this.$socket.emit("join", {
        userid: this.userid
      });
    },
    // 发送消息给后台 用于私发消息
    sendmsg() {
      this.$socket.emit("sendmsg", {
        userid: this.userid,
        msg: this.msg
      });
    }
  }
};

express代码

在刚才的www文件定义的连接中添加一下代码


// 用于存储每个用户的socket,实现私聊的功能
let arrAllSocket = {}
// 穿件socket连接
io.on('connection', (socket) => {
  console.log('连接上了');
  // console.log(socket);
  // join函数 用于用户连接
  socket.on('join', function (obj) {
    console.log(obj.userid + 'join')
    // 保存每个用户的连接状态 用于私发消息
    arrAllSocket[obj.userid] = socket
  })
  // 接收前台发送的消息 函数名为message
  socket.on('message', (data) => {
    console.log(data);
    // 将消息发送回前台(调用前台定义的方法) 函数名为sendMessage
    io.emit('sendMessage', data);
  });
  // 私发消息
  socket.on('sendmsg', function (data) {
    console.log(data);
    // 查询用户连接
    let target = arrAllSocket[data.userid]
    if (target) {
      //发送信息至指定的人
      target.emit('receivemsg', data)
    }
  })
})

后台代码封装

由于www文件不应该写太多代码,所以对这一部分代码进行封装

1、在项目目录下创建一个io的文件夹,结构如下

2、将刚才的那部分代码移入io/index.js

代码如下


// 将server作为参数传入
module.exports = function (server) {
  var io = require('socket.io')(server);
// 用于存储每个用户的socket,实现私聊的功能
  let arrAllSocket = {}
// 穿件socket连接
  io.on('connection', (socket) => {
    console.log('连接上了');
    // console.log(socket);
    // join函数 用于用户连接
    socket.on('join', function (obj) {
      console.log(obj.userid + 'join')
      // 保存每个用户的连接状态 用于私发消息
      arrAllSocket[obj.userid] = socket
    })
    // 接收前台发送的消息 函数名为message
    socket.on('message', (data) => {
      console.log(data);
      // 将消息发送回前台(调用前台定义的方法) 函数名为sendMessage
      io.emit('sendMessage', data);
    });
    // 私发消息
    socket.on('sendmsg', function (data) {
      console.log(data);
      // 查询用户连接
      let target = arrAllSocket[data.userid]
      if (target) {
        //发送信息至指定的人
        target.emit('receivemsg', data)
      }
    })
  })
}

最后在www文件中使用如下代码,引入文件


var io = require('../io')
io(server)

至此,聊天的基本功能实现。记录一下方便以后使用。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Vue+express+Socket实现聊天功能

本文链接: https://www.lsjlt.com/news/129299.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue+express+Socket实现聊天功能
    本文实例为大家分享了Vue+express+Socket实现聊天功能的具体代码,供大家参考,具体内容如下 实现聊天功能 具体功能 只是为了实现功能,不对界面进行美化 1、输入消息点击...
    99+
    2022-11-12
  • android socket聊天室功能实现
    前提概要 笔者很久之前其实就已经学习过了socket,当然也是用socket做过了聊天室,但是觉得此知识点比较一般,并无特别难的技术点,于是也并未深究。 然而近期一个项目中对...
    99+
    2022-06-06
    socket Android
  • Java Socket实现聊天室功能
    本文实例为大家分享了Java Socket实现聊天室的具体代码,供大家参考,具体内容如下 1 创建登录判断类UserLogin import java.util.HashSet; i...
    99+
    2022-11-13
  • node+socket实现简易聊天室功能
    本文实例为大家分享了node+socket实现简易聊天室的具体代码,供大家参考,具体内容如下 服务端 const net = require('net') const serv...
    99+
    2022-11-12
  • unity使用socket实现聊天室功能
    本文实例为大家分享了unity使用socket实现聊天室的具体代码,供大家参考,具体内容如下 unity聊天室服务端实现 using System; using System.C...
    99+
    2022-11-11
  • Node.js+express+socket实现在线实时多人聊天室
    本文实例为大家分享了Node.js+express+socket实现在线实时多人聊天室的具体代码,供大家参考,具体内容如下 文件结构如下: 前端部分: 登录页面Login部分: l...
    99+
    2022-11-12
  • Java聊天室之实现获取Socket功能
    目录一、题目描述二、解题思路三、代码详解一、题目描述 题目实现:获取远程服务器和客户机的IP地址和端口号。 二、解题思路 创建一个服务器类:ServerSocketFrame,继承J...
    99+
    2022-11-13
    Java实现聊天室 Java聊天室 Java 获取Socket
  • C#基于Socket实现多人聊天功能
    本文实例为大家分享了C#基于Socket实现多人聊天功能的具体代码,供大家参考,具体内容如下 服务器 服务器负责接受所有客户端发来的消息,和将接受到的问题群发到其他用户。 代码: u...
    99+
    2022-11-13
  • 使用socket实现网络聊天室和私聊功能
    使用socket技术实现网络聊天室和私聊功能,具体内容如下话不多说先上图:聊天室群聊页面在线用户的联系人列表socket连接页面私聊页面项目介绍与服务端实现socket连接:每个客户端连接到服务器的时候,服务器会将每个连接的socket保存...
    99+
    2023-05-30
    socket 聊天室 私聊
  • C#基于Socket实现简单聊天室功能
    因为这段时间在学习Socket,所以就试着写了一个简单的聊天室。主要分为服务器端和多个客户端。利用服务器端作数据中转站,实现消息群发。 1、服务器端有两个类: using Syste...
    99+
    2022-11-13
  • C++基于socket编程实现聊天室功能
    本文实例为大家分享了C++基于socket编程实现聊天室的具体代码,供大家参考,具体内容如下 服务端 // server.cpp : 此文件包含 "main" 函数。程序执行将在...
    99+
    2022-11-12
  • unity使用socket编程实现聊天室功能
    本文实例为大家分享了unity使用socket实现聊天室功能的具体代码,供大家参考,具体内容如下 示例: 什么是Socket: Socket(套接字),用来描述IP地址和端口,是通...
    99+
    2022-11-12
  • Vue+Websocket简单实现聊天功能
    本文实例为大家分享了Vue+Websocket简单实现聊天功能的具体代码,供大家参考,具体内容如下 效果图: 聊天室 此篇文章是针对Websocket的简单了解和应用,利用Node...
    99+
    2022-11-12
  • vue实现websocket客服聊天功能
    本文章主要介绍如何实现一个基本的聊天,后续会添加表情包,传照片等功能 其实刚开始接触的时候,我最大的疑惑是聊天功能的前期是否需要搭建什么框架、下载一些什么东西之类的,结果就是,其实w...
    99+
    2022-11-12
  • vue实现web在线聊天功能
    本文实例为大家分享了vue实现web在线聊天的具体代码,供大家参考,具体内容如下 最终实现的效果 实现过程 无限滚动窗体的实现之前已经介绍过,这里就不在赘述了,不清楚的可以通过文档...
    99+
    2022-11-12
  • Node.js+express+socket怎么实现在线实时多人聊天室
    本文小编为大家详细介绍“Node.js+express+socket怎么实现在线实时多人聊天室”,内容详细,步骤清晰,细节处理妥当,希望这篇“Node.js+express+socket怎么实现在线实时多人聊天室”文章能帮助大家解决疑惑,下...
    99+
    2023-06-17
  • C#如何基于Socket实现多人聊天功能
    这篇文章主要介绍C#如何基于Socket实现多人聊天功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下服务器服务器负责接受所有客户端发来的消息,和将接受到的问题群发到其他用户。代码:using ...
    99+
    2023-06-29
  • Java Socket+多线程实现多人聊天室功能
    本文实例为大家分享了Java Socket+多线程实现多人聊天室的具体代码,供大家参考,具体内容如下 思路简介 分为客户端和服务器两个类,所有的客户端将聊的内容发送给服务器,服务器接...
    99+
    2022-11-12
  • Java聊天室之使用Socket实现通信功能
    目录一、题目描述二、解题思路三、代码详解一、题目描述 题目实现:使用套接字实现了服务器端与客户端的通信。 运行程序,在服务器端的文本框中输入信息,然后按回车键,客户端就会收到服务器端...
    99+
    2022-11-13
    Java实现聊天室 Java聊天室 Java Socket 通信
  • Java Socket通信之聊天室功能
    本文实例为大家分享了Java Socket聊天室功能的具体代码,供大家参考,具体内容如下Client.javaimport java.io.*; import java.net.*; import java.util.*; public ...
    99+
    2023-05-30
    java socket 聊天室
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作