电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Vue+express+Socket實現聊天功能

瀏覽:155日期:2022-09-28 15:17:00

本文實例為大家分享了Vue+express+Socket實現聊天功能的具體代碼,供大家參考,具體內容如下

實現聊天功能

具體功能

只是為了實現功能,不對界面進行美化

1、輸入消息點擊發送所有用戶可以在下方收到消息

2、輸入userid后點擊連接,可以連接對應的聊天,另外一個界面輸入剛剛那個頁面的userid后再輸入內容點擊發送給指定的人,則剛才那個頁面可以打印輸出,而其他頁面不會收到,實現私聊的功能

3、沒有具體實現私聊的內容顯示,但是接收發送消息都可以實現,要實現私聊的內容顯示可以再添加一個私聊頁面

界面截圖

Vue+express+Socket實現聊天功能

項目準備

只對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+express+Socket實現聊天功能

項目實現

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的文件夾,結構如下

Vue+express+Socket實現聊天功能

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)

至此,聊天的基本功能實現。記錄一下方便以后使用。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Vue
相關文章:
主站蜘蛛池模板: 广州办公室设计,办公室装修,写字楼设计,办公室装修公司_德科 | 大流量卧式砂磨机_强力分散机_双行星双动力混合机_同心双轴搅拌机-莱州市龙跃化工机械有限公司 | 首页 - 军军小站|张军博客 | 实验室装修_实验室设计_实验室规划设计- 上海广建净化工程公司 | 【黄页88网】-B2B电子商务平台,b2b平台免费发布信息网 | 分类168信息网 - 分类信息网 免费发布与查询 | SDG吸附剂,SDG酸气吸附剂,干式酸性气体吸收剂生产厂家,超过20年生产使用经验。 - 富莱尔环保设备公司(原名天津市武清县环保设备厂) | LED太阳能中国结|发光红灯笼|灯杆造型灯|节日灯|太阳能灯笼|LED路灯杆装饰造型灯-北京中海轩光电 | 校园气象站_超声波气象站_农业气象站_雨量监测站_风途科技 | 搪瓷反应釜厂家,淄博搪瓷反应釜-淄博卓耀 | 馋嘴餐饮网_餐饮加盟店火爆好项目_餐饮连锁品牌加盟指南创业平台 | 净气型药品柜-试剂柜-无管道净气型通风柜-苏州毕恩思 | 化妆品加工厂-化妆品加工-化妆品代加工-面膜加工-广东欧泉生化科技有限公司 | 全自动面膜机_面膜折叠机价格_面膜灌装机定制_高速折棉机厂家-深圳市益豪科技有限公司 | 济南品牌包装设计公司_济南VI标志设计公司_山东锐尚文化传播 | 【星耀裂变】_企微SCRM_任务宝_视频号分销裂变_企业微信裂变增长_私域流量_裂变营销 | 济南冷库安装-山东冷库设计|建造|冷库维修-山东齐雪制冷设备有限公司 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 长沙网站建设制作「网站优化推广」-网页设计公司-速马科技官网 | 注塑机-压铸机-塑料注塑机-卧式注塑机-高速注塑机-单缸注塑机厂家-广东联升精密智能装备科技有限公司 | ERP企业管理系统永久免费版_在线ERP系统_OA办公_云版软件官网 | 3D全息投影_地面互动投影_360度立体投影_水幕灯光秀 | 广东银虎 蜂窝块状沸石分子筛-吸附脱硫分子筛-萍乡市捷龙环保科技有限公司 | 西安标准厂房_陕西工业厂房_西咸新区独栋厂房_长信科技产业园官方网站 | 耐火浇注料价格-高强高铝-刚玉碳化硅耐磨浇注料厂家【直销】 | 彩超机-黑白B超机-便携兽用B超机-多普勒彩超机价格「大为彩超」厂家 | 上海瑶恒实业有限公司|消防泵泵|离心泵|官网 | 沈阳真空机_沈阳真空包装机_沈阳大米真空包装机-沈阳海鹞真空包装机械有限公司 | 我爱古诗词_古诗词名句赏析学习平台 | 北京租车公司_汽车/客车/班车/大巴车租赁_商务会议/展会用车/旅游大巴出租_北京桐顺创业租车公司 | 包塑软管|金属软管|包塑金属软管-闵彬管业 | 济南保安公司加盟挂靠-亮剑国际安保服务集团总部-山东保安公司|济南保安培训学校 | 熔体泵_熔体出料泵_高温熔体泵-郑州海科熔体泵有限公司 | 太阳能发电系统-太阳能逆变器,控制器-河北沐天太阳能科技首页 | 直流大电流电源,燃料电池检漏设备-上海政飞 | 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 氧化铁红厂家-淄博宗昂化工 | 汕头市盛大文化传播有限公司,www.11400.cc | SDI车窗夹力测试仪-KEMKRAFT方向盘测试仪-上海爱泽工业设备有限公司 | 洁净棚-洁净工作棚-无菌室-净化工程公司_北京卫护科技有限公司 | 上海办公室装修公司_办公室设计_直营办公装修-羚志悦装 | 江苏齐宝进出口贸易有限公司 |