日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

vue使用WebSocket模擬實現聊天功能

瀏覽:171日期:2023-02-15 14:18:45

效果展示 兩個瀏覽器相互模擬

vue使用WebSocket模擬實現聊天功能

vue使用WebSocket模擬實現聊天功能

1.創建模擬node服務

在vue根目錄下創建 server.js 文件模擬后端服務器

vue使用WebSocket模擬實現聊天功能

**在server終端目錄下載 **

npm install --s ws

2.編寫server.js文件

代碼如下

var userNum = 0; //統計在線人數var chatList = [];//記錄聊天記錄var WebSocketServer = require(’ws’).Server;wss = new WebSocketServer({ port: 8181 }); //8181 與前端相對應//調用 broadcast 廣播,實現數據互通和實時更新wss.broadcast = function (msg) { wss.clients.forEach(function each(client) {client.send(msg); });};wss.on(’connection’, function (ws) { userNum++;//建立連接成功在線人數 +1 wss.broadcast(JSON.stringify({ funName: ’userCount’, users: userNum, chat: chatList })); //建立連接成功廣播一次當前在線人數 console.log(’Connected clients:’, userNum); //接收前端發送過來的數據 ws.on(’message’, function (e) {var resData = JSON.parse(e)console.log(’接收到來自clent的消息:’ + resData.msg)chatList.push({ userId: resData.userId, content: resData.msg });//每次發送信息,都會把信息存起來,然后通過廣播傳遞出去,這樣此每次進來的用戶就能看到之前的數據wss.broadcast(JSON.stringify({ userId: resData.userId, msg: resData.msg })); //每次發送都相當于廣播一次消息 }); ws.on(’close’, function (e) {userNum--;//建立連接關閉在線人數 -1wss.broadcast(JSON.stringify({ funName: ’userCount’, users: userNum, chat: chatList }));//建立連接關閉廣播一次當前在線人數console.log(’Connected clients:’, userNum);console.log(’長連接已關閉’) })})console.log(’服務器創建成功’)

然后npm run start啟動服務器

3.vue前端頁面

代碼如下

<template> <div class='chat-box'> <header>聊天室人數:{{count}}</header> <div ref='msg-box'> <divv-for='(i,index) in list':key='index' : ><div class='user-head'> <div : ></div></div><div class='user-msg'> <span : : >{{i.content}}</span></div> </div> </div> <div class='input-box'> <input type='text' ref='sendMsg' v-model='contentText' @keyup.enter='sendText()' /> <div : @click='sendText()'>發送</div> </div> </div></template> <script>export default { data() { return { ws: null, count: 0, userId: null, //當前用戶ID list: [], //聊天記錄的數組 contentText: '', //input輸入的值 }; }, created() { this.getUserID(); }, mounted() { this.initWebSocket(); }, methods: { //根據時間戳作為當前用戶ID getUserID() { let time = new Date().getTime(); this.userId = time; }, //根據userID生成一個隨機頭像 getUserHead(id, type) { let ID = String(id); if (type == 'bck') {return Number(ID.substring(ID.length - 3)); } if (type == 'polygon') {return Number(ID.substring(ID.length - 2)); } if (type == 'rotate') {return Number(ID.substring(ID.length - 3)); } }, //滾動條到底部 scrollBottm() { let el = this.$refs['msg-box']; el.scrollTop = el.scrollHeight; }, //發送聊天信息 sendText() { let _this = this; _this.$refs['sendMsg'].focus(); if (!_this.contentText) {return; } let params = {userId: _this.userId,msg: _this.contentText, }; _this.ws.send(JSON.stringify(params)); //調用WebSocket send()發送信息的方法 _this.contentText = ''; setTimeout(() => {_this.scrollBottm(); }, 500); }, //進入頁面創建websocket連接 initWebSocket() { let _this = this; //判斷頁面有沒有存在websocket連接 if (window.WebSocket) {// 此處的 :8181 端口號 要與后端配置的一致let ws = new WebSocket('ws://192.168.5.42:9502'); // let ws = new WebSocket('ws://192.168.5.8:8181'); //這里是我本地測試_this.ws = ws;ws.onopen = function (e) { console.log('服務器連接成功');};ws.onclose = function (e) { console.log('服務器連接關閉');};ws.onerror = function () { console.log('服務器連接出錯');};ws.onmessage = function (e) { //接收服務器返回的數據 let resData = JSON.parse(e.data); if (resData.funName == 'userCount') { _this.count = resData.users; _this.list = resData.chat; } else { _this.list = [ ..._this.list, { userId: resData.userId, content: resData.msg }, ]; }}; } }, },};</script> <style lang='scss' scoped>.chat-box { margin: 0 auto; background: #fafafa; position: absolute; height: 100%; width: 100%; // max-width: 700px; header { position: fixed; width: 100%; height: 3rem; background: #409eff; // max-width: 700px; display: flex; justify-content: center; align-items: center; font-weight: bold; color: white; font-size: 1rem; } .msg-box { position: absolute; height: calc(100% - 6.5rem); width: 100%; margin-top: 3rem; overflow-y: scroll; .msg { width: 95%; min-height: 2.5rem; margin: 1rem 0.5rem; position: relative; display: flex; justify-content: flex-start !important; .user-head {min-width: 2.5rem;width: 20%;width: 2.5rem;height: 2.5rem;border-radius: 50%;background: #f1f1f1;display: flex;justify-content: center;align-items: center;.head { width: 1.2rem; height: 1.2rem;}// position: absolute; } .user-msg {width: 80%;// position: absolute;word-break: break-all;position: relative;z-index: 5;span { display: inline-block; padding: 0.5rem 0.7rem; border-radius: 0.5rem; margin-top: 0.2rem; font-size: 0.88rem;}.left { background: white; animation: toLeft 0.5s ease both 1;}.right { background: #53a8ff; color: white; animation: toright 0.5s ease both 1;}@keyframes toLeft { 0% { opacity: 0; transform: translateX(-10px); } 100% { opacity: 1; transform: translateX(0px); }}@keyframes toright { 0% { opacity: 0; transform: translateX(10px); } 100% { opacity: 1; transform: translateX(0px); }} } } } .input-box { padding: 0 0.5rem; position: absolute; bottom: 0; width: 97%; height: 3.5rem; background: #fafafa; box-shadow: 0 0 5px #ccc; display: flex; justify-content: space-between; align-items: center; input { height: 2.3rem; display: inline-block; width: 100%; padding: 0.5rem; border: none; border-radius: 0.2rem; font-size: 0.88rem; } .btn { height: 2.3rem; min-width: 4rem; background: #e0e0e0; padding: 0.5rem; font-size: 0.88rem; color: white; text-align: center; border-radius: 0.2rem; margin-left: 0.5rem; transition: 0.5s; line-height: 2.3rem; } .btn-active { background: #409eff; } }}</style> 然后npm run dev,就可以實現局域網聊天了,有無線的話可以用手機連著無線訪問你的IP地址訪問,沒的話可以試下多開幾個窗口,也是能看到效果的!! 進入聊天室時和發送信息時服務器的打印日志

vue使用WebSocket模擬實現聊天功能

到此這篇關于vue使用WebSocket模擬實現聊天功能的文章就介紹到這了,更多相關vue使用WebSocket實現聊天內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩精品一卡二卡三卡四卡无卡| 日韩一区三区| 精品免费av一区二区三区| 日本成人中文字幕| 精品在线播放| 亚洲性图久久| 99热精品在线观看| 精品在线播放| 国产精品毛片在线| 国产农村妇女精品一二区| 亚洲欧美日韩国产一区二区| 日韩免费在线| 久久久精品网| 欧美特黄一级| 水野朝阳av一区二区三区| 性色av一区二区怡红| 日本精品另类| 国产一区国产二区国产三区| av在线最新| 麻豆久久久久久| 美女精品视频在线| av一区在线| 免播放器亚洲| 国产伦精品一区二区三区在线播放| 精品国产一区二区三区噜噜噜| 国产精品观看| 国产91欧美| 亚洲在线网站| 久久精品国产亚洲aⅴ| 999国产精品视频| 亚洲网址在线观看| 久久超碰99| 欧美日韩国产欧| 欧美日一区二区在线观看| 青青青国产精品| 国产va免费精品观看精品视频| 亚洲大片在线| 欧美日本久久| 伊人成人在线视频| 福利一区和二区| 四虎在线精品| 久久青青视频| 日本国产一区| 国产午夜久久| 久久久久久久欧美精品| 国产中文在线播放| 亚洲人亚洲人色久| 日韩免费在线| 欧美日韩xxxx| 在线综合欧美| 四虎4545www国产精品 | 亚洲欧美伊人| 久久99蜜桃| 久久国产高清| 欧美激情一区| 亚洲精品伊人| 亚洲大片在线| 久久久久久色| 亚洲九九精品| 日韩精品久久久久久久电影99爱| 欧美一级二级视频| 天堂av在线一区| 国产精品国产三级国产在线观看| 一区福利视频| 日韩欧美国产精品综合嫩v| 国产欧美日韩影院| 亚洲欧美日韩视频二区| 欧美二三四区| 国产videos久久| 日韩av一区二| 亚洲日产国产精品| 日韩欧美美女在线观看| 爽好久久久欧美精品| 亚洲一区二区三区高清| 在线观看免费一区二区| 午夜国产一区二区| 国产真实久久| 国产国产精品| 欧美天堂视频| 欧洲一级精品| 久久久人人人| 欧美精品一区二区久久| 免费精品国产的网站免费观看| 亚洲国内欧美| 亚洲福利久久| 欧美成人亚洲| 久久亚洲欧美| 日韩av不卡一区二区| 国产精品欧美大片| 国产成人精品亚洲线观看| 天堂√8在线中文| 91成人精品| 婷婷精品在线| 欧美成人一二区| 欧美精品日日操| 亚洲资源av| 久久国产免费看| 精品免费av| 99国产精品久久久久久久| 欧美日韩国产亚洲一区| 中文字幕成人| 国产欧美一区二区三区精品观看 | 久久精品99国产国产精| 精品视频高潮| 2023国产精品久久久精品双| 五月国产精品| 日韩高清中文字幕一区二区| 日韩视频久久| 成人精品国产亚洲| 日韩不卡在线观看日韩不卡视频| 国产欧美一区二区三区精品酒店| 中文国产一区| 国产精品久久乐| 欧美特黄a级高清免费大片a级| 日韩三级久久| 日韩中文影院| 青青草视频一区| 日韩精品水蜜桃| 国产精品毛片久久久| 一本色道精品久久一区二区三区| 久久久成人网| 免费一级欧美在线观看视频| 在线国产精品一区| 欧美特黄a级高清免费大片a级| 亚洲黄色免费av| 国产精品一区亚洲| 性欧美精品高清| 成人在线免费观看网站| 日韩激情网站| 日韩精品a在线观看91| 亚洲欧美视频| 午夜久久免费观看| 欧美在线观看视频一区| 色网在线免费观看| 日本不良网站在线观看| av高清不卡| 日韩中文首页| 在线手机中文字幕| 国产一区二区三区网| 精品国产午夜肉伦伦影院| 久久一区欧美| 国产成人精品一区二区三区免费| 少妇精品久久久一区二区| 久热精品在线| 日韩一区二区三免费高清在线观看| 蜜桃久久精品一区二区| 日韩精品中文字幕一区二区| 深夜福利一区| 91精品丝袜国产高跟在线| 91麻豆精品激情在线观看最新| 日韩欧美精品一区二区综合视频| 亚洲精品无吗| 国产三级一区| 精品高清久久| 日韩精品dvd| 亚洲欧美综合| 亚洲伊人精品酒店| 欧美一区自拍| 国产精品chinese| 日韩深夜视频| 日韩在线a电影| 久久精品av麻豆的观看方式| 国产精品日本一区二区不卡视频 | 成人综合一区| 久久在线电影| 综合欧美亚洲| 美腿丝袜亚洲三区| 成人片免费看| 婷婷五月色综合香五月| 麻豆国产欧美日韩综合精品二区| 97久久精品| 91tv亚洲精品香蕉国产一区| 欧美二区视频| 国产精品第一国产精品| 久久国产小视频| 国产精品免费大片| 蜜桃国内精品久久久久软件9| 国产精品一区二区中文字幕| 欧美日韩国产免费观看视频| 日本视频中文字幕一区二区三区| 精品国产乱码久久久久久1区2匹| 一区久久精品| 国产成人免费av一区二区午夜| 日韩影院精彩在线| 9999国产精品| 私拍精品福利视频在线一区| 婷婷精品在线观看| 免费精品国产的网站免费观看| 欧美激情日韩| 日本欧美一区| 蜜桃视频免费观看一区| 久久精品卡一| 久久一区亚洲| 日韩欧美中文在线观看| 欧美在线资源| 久久亚洲在线| 秋霞国产精品| 日韩大片免费观看| 精品亚洲美女网站| 日本久久黄色|