当前位置: 首页 > news >正文

极简聊天室-websocket版(双向通信)

我们知道WebSocket是可以双向通信的,把极简聊天室代码又改了一下,前端发信息到后端也使用websocket,其实代码量更少了。。。

const express = require('express');
const app = express();
var wsServer = require('express-ws')(app)var msgs=[];app.use('/', express.static('./'));app.ws('/ws', (ws,req)=>{ws.send(JSON.stringify(msgs));ws.on('message', msg => {msgs.push(JSON.parse(msg));wsServer.getWss().clients.forEach(client=>{ client.send(msg) });})
});app.listen(3000, () => { console.log(`极简聊天室WebSocket版服务启动`); })
<!DOCTYPE html>
<html>
<head>
<title>极简聊天室websocket版</title>
<meta charset="utf-8">
<script src="jquery-3.6.1.min.js"></script>
</head>
<body>
<input id="msg"></input><button id="send" onclick=sendmsg()>发送</button>
<ul id="msgs">
</ul>
<script>
var uid;
let reg = new RegExp("(^|&)" + "uid" + "=([^&]*)(&|$)","i");
let r = location.search.substr(1).match(reg);
uid=(r!=null)?decodeURI(r[2]):"me";var ws = new WebSocket("http://localhost:3000/ws");ws.onmessage = event => {let jvar=JSON.parse(event.data);if (jvar instanceof Array) { jvar.forEach(item=>{ $("#msgs").append(`<li>${item.uid} 说: ${item.msg}</li>`)  })  }else { $("#msgs").append(`<li>${jvar.uid} 说: ${jvar.msg}</li>`) }
}function sendmsg()	{  ws.send(JSON.stringify({"uid":uid,"msg":$("#msg").val()})) }
</script>
</body>
</html>

效果跟前面一样,就不再贴图了。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数据科学家必须掌握的12个Python功能
  • pxe自动安装linux
  • 虚拟机连接xshell的三种方式
  • ReentrantLock的阻塞性、可中断性
  • 捉虫笔记(二)之 杀软请你自重点
  • Python 基础教程:List(列表)的使用
  • .NET周刊【7月第4期 2024-07-28】
  • LabVIEW在DCS中的优势
  • 代码随想录训练营第五十二天 孤岛的总面积
  • 12 - FFmpeg 编码 H264
  • 前端Web-JavaScript(上)
  • P10838 『FLA - I』庭中有奇树
  • 人工智能时代,程序员如何保持核心竞争力?
  • “艺启创作 智绘未来”AI漫画创意大赛,燃动国漫新纪元!
  • 我的256天 创作纪念日
  • JS 中的深拷贝与浅拷贝
  • 收藏网友的 源程序下载网
  • [NodeJS] 关于Buffer
  • Android开源项目规范总结
  • extjs4学习之配置
  • HTTP中的ETag在移动客户端的应用
  • Java教程_软件开发基础
  • JSDuck 与 AngularJS 融合技巧
  • MD5加密原理解析及OC版原理实现
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • PHP CLI应用的调试原理
  • Python利用正则抓取网页内容保存到本地
  • WinRAR存在严重的安全漏洞影响5亿用户
  • yii2权限控制rbac之rule详细讲解
  • 安卓应用性能调试和优化经验分享
  • 从tcpdump抓包看TCP/IP协议
  • 浮动相关
  • 手写双向链表LinkedList的几个常用功能
  • 小程序测试方案初探
  • 国内开源镜像站点
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • # Redis 入门到精通(九)-- 主从复制(1)
  • #mysql 8.0 踩坑日记
  • (13)Hive调优——动态分区导致的小文件问题
  • (145)光线追踪距离场柔和阴影
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (javascript)再说document.body.scrollTop的使用问题
  • (Oracle)SQL优化技巧(一):分页查询
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (WSI分类)WSI分类文献小综述 2024
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (四) Graphivz 颜色选择
  • (四)React组件、useState、组件样式
  • (图文详解)小程序AppID申请以及在Hbuilderx中运行
  • (一)基于IDEA的JAVA基础1
  • (已解决)报错:Could not load the Qt platform plugin “xcb“