WebSocket——vue3简易聊天室
WebSocket原生实现
WebSocket-Vue2
WebSocket-Vue3
前端实现
目录结构
登录(LoginView.vue)
<template><div class="login"><input type="text" placeholder="请输入用户名" v-model="userName"><br><input type="password" placeholder="请输入密码" v-model="passWord"><br><button @click="handleEntryClick">登录</button></div>
</template>
<script>
import {ref, onMounted} from 'vue'
import {useRouter} from 'vue-router'
export default {name: 'Login',setup () {const userName = ref('')const passWord = ref('')const router = useRouter()onMounted(() => {console.log(localStorage.getItem('userName'))if (!localStorage.getItem('userName')) {router.push('/')return}})const handleEntryClick = () => {const _passWord = passWord.value.trim()console.log('userName', userName)console.log('passWord', passWord)if (_passWord.length < 6) {alert('密码不能小于6位')return}localStorage.setItem('userName', userName.value)userName.value = ''passWord.value = ''router.push('/home')}return {userName,passWord,handleEntryClick}}
}
</script>
聊天室(HomeView.vue)
<template><div><div><ul><li v-for="(item, index) in msgList" :key="index"><p><span>用户:{{item.user}}</span><span>{{new Date(item.dateTime)}}</span></p><p>消息:{{item.msg}}</p></li></ul></div><hr><input type="text" placeholder="请输入消息" v-model="msg"><button @click="handleSendMsg">发送</button></div>
</template><script>
import {reactive, onMounted, toRefs} from 'vue'
import {useRouter} from 'vue-router'
import useWebSocket from '@/hooks'
export default {name: 'HomeView',components: {},setup() {const state = reactive({msg: '',msgList: []})let userName = localStorage.getItem('userName')const router = useRouter()const ws = useWebSocket(handleMessage)onMounted (() => {if (!userName) {router.push('/')}})const handleSendMsg = () => {if (!state.msg.trim().length) {return}ws.send(JSON.stringify({user: userName,msg: state.msg,dateTime: new Date().getDate()}))}function handleMessage ({data}) {console.log('data',JSON.parse(data))const msg = JSON.parse(data)state.msgList.push(msg)}return {...toRefs(state),handleSendMsg}}
}
</script>
webscoket封装
import WS_BASE_URL from '../configs'
function useWebSocket (handleMessage) {const ws = new WebSocket(WS_BASE_URL)const init = () => {bindEvent()}function bindEvent () {console.log('绑定事件')ws.addEventListener('close', handleClose, false)ws.addEventListener('open', handleOpen, false)ws.addEventListener('error', handleError, false)ws.addEventListener('message', handleMessage, false)}function handleOpen (e) {console.log('handleOpen', e)}function handleClose (e) {console.log('handleClose', e)}function handleError(e) {console.log('handleError', e)}init()return ws
}
export default useWebSocket
效果实现
WebSocket——vue3简易聊天室相关推荐
- 基于Node.js + WebSocket 的简易聊天室
代码地址如下: http://www.demodashi.com/demo/13282.html Node.js聊天室运行说明 Node.js的本质就是运行在服务端的JavaScript.Node.j ...
- 原创 回归前端学习第21天-实现俄罗斯方块小游戏3(深入了解Websocket~优化简易聊天室)
对昨天的简易聊天室进行优化 增加一个mes对象,将传送的数据放在对象里 增加一个mes对象,将传送的数据放在对象里 wsServer.js中替换代码 broadcast(conn.nickname + ...
- Vue3 -- 基于Websocket实现简易聊天室
文章目录 标题 代码地址 表情包资源 chat.data.ts index.vue 标题 接上一篇博文 这里使用 Vue3 + Typescript + Websocket 实现在线聊天功能的前端部分 ...
- nodejs websocket 实现简易聊天室功能
文章目录 1. 服务端 app.js 代码 2. 客户端 app.html 代码 3. 样式代码 app.css 4. nodemon 辅助开发 首先说明,以下代码都是基于 Nodejs+webSoc ...
- webSocket——Vue2简易聊天室
WebSocket原生实现 WebSocket-Vue2 WebSocket-Vue3 Vue2版本实现 前端实现 目录结构 login.vue 登录 <template><div& ...
- websocket实现简易聊天室
websocket支持全双工通信,也就是客户端和服务端双向通信.以前都是通过http轮询的方式实现实时的,这非常耗性能.Websocket不仅能节省资源和带宽,还能实现长链接的作用 前端通过创建Web ...
- Java WebSocket实现简易聊天室
一.Socket简介 Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求.Socket的英文原义是"孔"或 ...
- 前端websocket实现简易聊天室
分为客户端和服务端,客户端就是一个简单的html页面,服务端使用node进行编写.具体代码如下 index.html <!DOCTYPE html> <html> <he ...
- SpringBoot整合WebSocket实现简易聊天室
文章目录 什么是WebSocket ? WebSocket通信模型 为什么需要WebSocket Websocket与http的关系 SpringBoot集成WebSocket 什么是WebSocke ...
最新文章
- [原创]商城系统下单库存管控系列杂记(二)(并发安全和性能部分延伸)
- 2017年云栖大会-云HBase专场会后资料-欢迎扩散
- Django的model模型
- eureka架构图原理
- mysql 存储过程中limit
- 技术动态 | 图对比学习的最新进展
- jap sql 保存_【hibernate spring data jpa】执行了save()方法 sql语句也执行了,但是数据并未插入数据库中...
- 图像处理:Canny边缘检测算法原理(一)
- 通过利用“业务映射”来构建敏捷组织
- 贝叶斯信息融合 MATLAB,信息融合理论研究进展:基于变分贝叶斯的联合优化
- 新唐N76E003单片机用APROM模拟EEPROM每次下载写入值复位为0XFF
- 飞信WEB接口的一个返回网页C#处理源码
- 拼多多秒杀活动的谣言
- Store generated project files externally
- Light-sleep 模式下的电流功耗测试及特性(使用 Wi-Fi)
- 【阿里云】云服务器ECS怎么一键重装系统
- Telnet 控制智能灯泡
- [论文阅读] Self-Sustaining Representation Expansion for Non-Exemplar Class-Incremental Learning
- qcqa是什么职位_qa是什么意思工作职责(qa和qc哪个工资更高)
- 【最经典的79个】软件测试面试题(内含答案)都是可以提前准备的!