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

embedded/2024/9/22 13:46:56/

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

javascript">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版服务启动`); })
html"><!DOCTYPE html>
<html>
<head>
<title>极简聊天室html" title=websocket>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=javascript language-javascript">sendmsg()>发送</button>
<ul id="msgs">
</ul>
<script>javascript">
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>

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


http://www.ppmy.cn/embedded/90737.html

相关文章

售前到底需要什么能力?一起来蹚一蹚售前的路!

售前严格来说&#xff0c;就分两块&#xff1a; 1、面向客户采购与销售过程的售前事务能力&#xff08;上层&#xff09; 2、面向客户问题解决的售前咨询能力&#xff08;下层&#xff09; 这两者有一个关系&#xff0c;搞懂这个关系&#xff0c;就搞懂了整个售前能力全景蓝图…

使用snap的安装docker配置阿里云镜像加速

使用snap安装docker非常的简单&#xff0c;一条命令即可 snap install docker 但是通过这个命令安装的docker, 配置阿里云镜像跟常规安装的配置起来不太一样, 下面讲一下配置流程 修改docker配置文件/var/snap/docker/current/config/daemon.json 这个文件应该是已经创建好…

应急靶场(11):【玄机】日志分析-apache日志分析

题目 提交当天访问次数最多的IP&#xff0c;即黑客IP黑客使用的浏览器指纹是什么&#xff0c;提交指纹的md5查看index.php页面被访问的次数&#xff0c;提交次数查看黑客IP访问了多少次&#xff0c;提交次数查看2023年8月03日8时这一个小时内有多少IP访问&#xff0c;提交次数 …

操作系统信号处理探讨

操作系统信号处理探讨 操作系统是计算机中最重要的软件之一&#xff0c;它负责对计算机的硬件和软件资源进行统一管理&#xff0c;确保计算机系统的正常运行。在操作系统的众多功能中&#xff0c;信号处理是至关重要的一环。信号处理是指操作系统如何接收、处理和响应来自硬件…

大规模深度学习推理引擎是什么?

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 首先&#xff0c;我们来理解 “深度学习”&#xff1a;它是人工智能的一个重要分支&#xff0c;模仿人脑的神经网络结构&#xff0c;运用多层神经网络来学习和解析数据。这些神经网络能够从庞大的数据集…

【QT】绘图API

目录 绘图API核心类 第一步&#xff1a;重写paintEvent事件函数 第二步&#xff1a;创建QPainter 第三步&#xff1a;设置QPainter绘制的文字类型&#xff08;非必须&#xff09; 第四步&#xff1a;设置画笔属性&#xff08;线条&#xff09; 第五步&#xff1a;设置画…

11.redis的客户端-Jedis

1.Jedis 以redis命令作为方法名称&#xff0c;学习成本低&#xff0c;简单使用。但是jedis实例是不安全的&#xff0c;多线程环境下需要基于连接池来使用。 2.Lettuce lettuce是基于Netty实现的&#xff0c;支持同步&#xff0c;异步和响应式编程方式&#xff0c;并且是线程…

【科研选题第2期】UTD24与一些约稿期刊

一、商学院顶级期刊目录&#xff1a;UTD24与FT501、UTD24期刊与FT50期刊目录2、检索 二、期刊约稿选题1、《欧洲运筹学杂志》&#xff08;European Journal of Operational Research&#xff0c; EJOR&#xff09;&#xff08;1&#xff09;能源转型的复杂性 2、Journal of Env…