WebSocket菜鸟教程二

2023-11-09

websocket服务器,多窗口显示数据案例


	//注意事项
		//1.因为WebSocket存在一段时间后自动断开链接的问题,故采用每次读写操作都重新链接的方式;
		//2.服务端总链接数量有限,因此每次重新链接前应先关闭之前的链接,而不能直接创建链接;
		//3.发送信息后还未接收到返回数据时应该禁用“发送”按钮,防止连续触发造成设备通信异常;
		//4.为防止出现服务端一直无响应的情况,应添加一个重置链接的功能;
		<div style="width:620px;margin:0 auto;text-align:center;">
		<h3>JS调用 WebSocket测试Demo</h3>
	</div>
	<div style="width:620px;margin:0 auto;background-color:#eee;">
		<br />
		<lable style="display:block;">&nbsp;&nbsp;操作区域<lable>
				<div style="width:580px;margin:8px auto;border:1px solid #aaa;background-color:rgb(252,228,214);">
					<br />
					<div>
						<lable>&nbsp;&nbsp;卡号:<lable>
								<textarea id="cardNo" rows="1" cols="42"></textarea>
					</div>
					<br />
					<div style="width:500px;">
						&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
					
						&nbsp;&nbsp;
						<input id="send" type="button" value="发送信息">
						&nbsp;&nbsp;
						<input id="reset" type="button" value="重置链接">
					</div>
					<br>
				</div>
				<br />
				<lable style="display:block;">&nbsp;&nbsp;接收记录<lable>
						<div style="width:583px;margin:8px auto;">
							<textarea id="record" rows="12" cols="80" style="background-color:rgb(226,239,218);"></textarea>
						</div>
						<br />
	</div>

JS部分

	var ws = null;//WebSocket 链接

		var url = "ws://127.0.0.1:8081";//WebSocket服务端地址;ip 和端口根据实际情况配置
	//打开连接
		function open() {
			if ("WebSocket" in window) {//检查当前浏览器是否支持WebSocket

				if (ws) {//判断是否已连接
					ws.close();
					ws = null;
				}
				//打开一个 web socket
				ws = new WebSocket(url);
				ws.onopen = function (evt) {//连接成功后回调函数
					send();//执行发送数据
				};

				ws.onmessage = function (evt) {//接收到信息--把接收信息添加到 接收记录 中,并关闭链接
					ws.close();
					ws = null;
					document.getElementById("record").value = document.getElementById("record").value + "\n " + evt.data;
					document.getElementById("send").disabled = false;
				};

			} else {
				// 浏览器不支持 WebSocket
				document.getElementById("record").value = document.getElementById("record").value + "\n 您的浏览器不支持 WebSocket!";
			}
		}
	//发送数据
		function send() {
			document.getElementById("send").disabled = true;//先禁用按钮,防止连续触发造成链接错误

		}


		//重置链接
		function reset() {
			if (ws) {//判断是否已连接
				ws.close();
				ws = null;
			}
			document.getElementById("record").value = document.getElementById("record").value + "\n 重置链接成功!";
			document.getElementById("send").disabled = false;
		}


<script type="text/javascript">
	document.getElementById("send").onclick = function () { open(); }
	document.getElementById("reset").onclick = function () { reset(); }
</script>


在不同的浏览器不同的窗口依然连接成功,函数触发成功

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WebSocket菜鸟教程二 的相关文章

随机推荐

  • filter过滤器实现权限访问控制以及同一账号只能登录一台设备

    需求 如题目所意 未登录用户不能浏览访问项目内部的资源 对访问的请求和响应进行拦截 且一个用户只能在一台设备登录 权限访问控制功能可以通过过滤器或者拦截器去实现 在这里我用的是过滤器 过滤器可以过滤全部action请求 拦截器则更有针对性
  • unity通过键盘控制物体移动,大小的缩放

    拖动距离 private float distance 10 缩放量 float scale 0 2f 通过键盘 Q 或者 E 控制物体的缩放 通过键盘 w s a d 控制物体上下左右的移动 private void Update if
  • PWM实现线性调光

    1 PWM调光原理 PWM全称为脉宽调制技术 是通过高精度的计数器对方波的占空比进行编码 就是这个东西 其实很好理解 高电平的时候才会做功 低电平的时候肯定不亮啊 PWM就是调制高电平的占比 其实一般是低电平才有效 因为会外接一个12V的电
  • XFocus Windows Internet 服务器安全配置

    Windows 2003版本区别 1 Windows Server 2003 Standard Edition 标准版 针对中小型企业的核心产品 他也是支持双路处理器 4GB的内存 它除了具备 Windows Server 2003 Web
  • Revit SDK下载地址

    20190325更新 共享了如下sdk REVIT 2014 SDK exe REVIT2015SDK SubscriptionRelease msi REVIT 2016 SDK msi Revit 2017 1 SDK Update O
  • 树莓派OpenWrt SD扩展问题

    树莓派OpenWrt磁盘扩展 1 查看问题 前几天给树莓派4B刷了OpenWrt当做软路由来使用 发现树莓派的SD卡空间没有完全被使用 有一部分未分区 已用大概只有2GB df h查看 2 fdisk 命令查看磁盘 3 按p查看分区情况 发
  • ansible自动化运维工具上部署lnmp架构

    ansible自动化运维工具上部署lnmp架构 ansible安装 通过ansible连接到192 168 228 20配置nginx安装 本地也要安装nginx 步骤略 安装mysql 安装PHP ansible自动化运维工具上部署lnm
  • Spring默认使用的JSON工具--Jackson

    Spring默认使用的JSON工具 Jackson 一 Jackson介绍 我们常用的json转换工具包括fastJson Gson Jackson等 其中Gson是Google所维护 功能全 fastJson特点是快 但是爆出几次的重大b
  • 2021最新版IDEA右侧Maven模块以及View下的Maven Project不见了解决方法

    问题描述 重新启动了一下IDEA后发现许多jar包找不到 想使用Maven进行依赖刷新 却找不到项目右侧的Maven Project 网上搜索了很多解决方法 如清除IDEA缓存 重启电脑 删除隐藏文件等等 都没有效果 将正确的解决方法记录在
  • Redis集群模式使用Lua脚本的限制

    问题复现 ERR bad lua script for redis cluster all the keys that the script uses should be passed using the KEYS array and KE
  • chapter15:springboot与监控管理

    Spring Boot与监控管理视频 1 简介 通过引入spring boot starter actuator 可以使用SpringBoot为我们提供的准生产环境下的应用监控和管理功能 我们可以通过http jmx ssh协议来进行操作
  • js宏观任务、微观任务

    js运行机制分为同步异步 异步又分为宏观事件和微观事件 同步异步 js是一门单线程语言 因此js在同一个时间里只能做一件事 单线程意味着 如果在同个时间有多个任务的话 这些任务就需要排队 前一个执行完成才能执行下一个任务 同步任务 同步任务
  • Linux之内核级防火墙selinux模块

    一 什么是selinux SELinux Security Enhanced Linux 是美国国家安全局 NSA 对于强制访问控制的实现 是 Linux历史上最杰出的新安全子系统 NSA是在Linux社区的帮助下开发了一种访问控制体系 在
  • c语言小游戏——扫雷

    扫雷是一款经典的单人益智游戏 玩家需要在一个由许多方块组成的棋盘上找出所有的地雷 而不触发任何一颗地雷 int input 0 do menu printf 请选择 gt scanf d input 输入1进入游戏 输入0退出游戏 输入其他
  • 我们总结了每个技术开发团队都会遇到的 4 个难题

    我们整理了一篇 每个技术团队都会遇到的4个难题 帮助即将从校园进入公司实习的后端程序员 以实践的视角 看看一个后端技术团队会遇到的一些难题 虽然 技术上的难题远不止于此 但如果能从这篇文章中获得一些职业体感 也许对你的实习面试会有所帮助 从
  • Python图像处理-3.pil裁剪、旋转粘贴图片

    from PIL import Image import matplotlib pyplot as plt pil im1 Image open pic1 png plt figure girlfriend1 plt imshow pil
  • c++中创建与调用dll

    文章目录 1 dll的创建 2 dll的使用 3 仅使用dll 显式链接 4 一点小的建议 好处想必不用说了 所谓的黑盒复用 实现模块化的同时避免源代码暴露等 可以将某一通用功能做成模块 方便复用 同时软件更新时如果只更新了几个模块 可以更
  • zookeeper

    先说 Paxos 它是一个基于消息传递的一致性算法 Leslie Lamport 在 1990 年提出 近几年被广泛应用于分布式计算中 Google 的 Chubby Apache 的 Zookeeper 都是基于它的理论来实现的 pxos
  • Vuejs学习八:map()函数

    定义 map 函数定义在JS的array中 它返回一个新的数组 数组中的元素为原生数据用函数处理后的值 map 不会对空数组进行检测 map 不会改变原始数组 let temp that caseTagsList map item gt i
  • WebSocket菜鸟教程二

    websocket服务器 多窗口显示数据案例 注意事项 1 因为WebSocket存在一段时间后自动断开链接的问题 故采用每次读写操作都重新链接的方式 2 服务端总链接数量有限 因此每次重新链接前应先关闭之前的链接 而不能直接创建链接 3