百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

随意开发一个websocket通信DEMO(websocket开源库)

toyiye 2024-07-06 00:37 38 浏览 0 评论

随意开发一个websocket通信DEMO

示例:

连接一个免费的ws测试服务来演示此项功能,HeartBeat为心跳连接

ws://123.207.136.134:9010/ajaxchattest

希望各位小伙伴多多点赞收藏转发

源码给上:

HTML

<div>
			<h1>WebSocket 通信</h1>
			<div>
				<div>
					<textarea rows="6" id="sendMsg" style="width: 100%;"></textarea>
				</div>
				<div>
					<div>
						<button type="button" onkeydown="sendMsg()" onclick="sendMsg()">发送</button>
					</div>
				</div>
			</div>
			<div class="row">
				<div class="col">
					<div></div>
					<div>
						<div id="chartRoom">
							<p>本机发送消息:<span id="receivedMsg"></span></p>
							<p>服务器返回消息:<span id="getMsg"></span></p>
							<a href="javascript:;" onclick="refreshConnect()" role="button">刷新连接</a>
							<hr>
						</div>
					</div>
				</div>
			</div>
		</div>
		<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
		<script src="./static/js/websocket.js"></script>

JS

var os = require("os");
var websoketArray = [];
if (typeof module === 'object') {
	window.jQuery = window.$ = module.exports;
};
$(function() {
	startConnect();
});

function startConnect() {
	websoketArray.push(new createWebsocket("ws://123.207.136.134:9010/ajaxchattest"));
}
function createWebsocket(url) {
	var heartCheck = {
		timeout: 3000,
		timeoutObj: null,
		reset: function() {
			clearTimeout(this.timeoutObj);
			this.start();
		},
		start: function() {
			this.timeoutObj = setTimeout(function() {
				ws.send("HeartBeat");
			}, this.timeout)
		}
	}
	var ws = new WebSocket(url);
	ws.onopen = (event) => {
		console.log("已成功连接ws服务");
		$("#chartRoom").append("<p>与 " + url + " 建立连接--成功</p>");
		heartCheck.start();
	}
	ws.onmessage = (event) => {
		console.log(event);
		console.log(event.data);
		if (!event.data.includes("HeartBeat")) {
			$("#getMsg").html(event.data);
		} else {
			heartCheck.reset();
		}
	}
	ws.onclose = function(event) {
		console.log(url + "连接已关闭...");
		clearTimeout(heartCheck.timeoutObj);
	}
	ws.onerror = function(event) {
		$("#chartRoom").append("<p>与 " + url + " 建立连接--失败</p>");
		ws.close();
		websoketArray.splice(websoketArray.indexOf(ws), 1);
		console.log(url + "连接已关闭");
		setTimeout(function() {
			startConnect();
		}, 3000);
	}
	return ws;
}

function sendMsg() {
	var msg = $("#sendMsg").val();
	if (!msg) {
		return;
	}
	$("#receivedMsg").html(msg);
	if (msg !== "" && msg !== undefined) {
		for (var i = 0; i < websoketArray.length; i++) {
			websoketArray[i].send(msg);
			$("#sendMsg").val(null);
		}
	}
}

function refreshConnect() {
	for (var i = 0; i < websoketArray.length; i++) {
		websoketArray[i].close();
	}
	setTimeout(function() {
		startConnect();
	}, 3000);
}

相关推荐

「编程」Java GUI 基础(java编程语言基础)

图形化学习是外功,内功外功配合才能所向披靡。一、JFrameJAVASWING导入包importjavax.swing.*导入包importjava.awt.*JFrameframe=new...

这六个Java技术当年是多么风光,而现在又有几个人用过

嗨,雷猴啊,今天我给大家分享下我的开发历程中,我知道的那些被淘汰的技术或者框架。不知道你们都知道吗?也不知道你们都有没有用过,但是它们之前都是风靡一时,让我们再来了解一次吧。偷偷告诉大家有些我甚至都没...

开发第一个Swing程序(开发第一个java程序实验报告)

packagecom.web.www;importjavax.swing.*;/**第一个Swing程序*/publicclassSwing1extendsJFrame{publicSw...

Java课程设计项目实例《远程屏幕分享监视》第2部分

Java课程设计项目实例《远程屏幕分享监视》第2部分1、服务器端ScreenMonitoringServer程序类及相关的功能方法的编程实现(1)创建出服务器端的ScreenMonitoringSer...

新手学Java编程语言怎么入门?知识点都帮你整理好了

新手学Java编程语言怎么入门?下面和千锋广州小编一起来看看吧!掌握语言基础是第一步,了解Java基础知识,Java关键字、核心概念或者基本编码技术。掌握操作符、控制执行流程、访问权限控制、复用类、多...

Java Swing组件“HelloWorld”程序演示实例

Java源代码:/*首先导入Swing需要的包*/importjavax.swing.*;importjavax.swing.UIManager;importjava.awt.*;import...

新年Java小游戏之「年兽大作战」祝您笑口常开

这个游戏加上编写文章,上班摸鱼时间加上回家的空闲时间,大概花了三天多。java写这玩应真的很痛苦,各种状态位,各种图片和逻辑判断,脑袋都快炸了。而且肯定没有前端的精致,效果一般,偶尔会有卡顿,各位就图...

10分钟掌握 JMeter接口测试的基础入门

嘿。大家好,我是4U:...

JMeter 的简单安装说明(jmeter安装配置)

最近在做一组性能测试,接触到了JMeter这个测试工具,在这里记录一下JMeter的介绍以及简单安装过程。JMeter简介...

Jmeter压测实例分享——新手儿也能一学就会!

JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。它可以用于测试静态和动态资源,例如静态文件、Java...

过年必备Java动态烟花教程如何用Canvas和Timer实现炫酷烟花动画

烟花是一种常见的庆祝活动和节日的方式,它们在夜空中绽放出各种颜色和形状,给人们带来美丽和欢乐。你是否想过用Java编程来模拟烟花的效果呢?如果你对此感兴趣,那么这篇教程就是为你准备的。在这篇教程中,你...

全程软件测试(九十五):Jmeter技能基础—读书笔记

jmeter是一款优秀的开源性能测试工具,目前最新版本3.0版本,官网文档地址:http://jmeter.apache.org/usermanual/index.html一、优点...

原创 JAVA Swing JFrame窗口的建立

importjava.awt.*;importjavax.swing.*;publicclassExample1extendsJFrame{//定义一个类继承JFrame类public...

Java Swing组件下的JComboBox组件实例

运行成功的界面:java源代码:一定要注意:执行环境(JRE)javaSE-1.8/*首先导入JButtontest所需要的包*/importjavax.swing.*;importjavax.s...

Java引包的几种方法(java 引用)

第一种方法可以在Superclass这里输入javax.swing.JFrame进行引包也可以在类体外面输入importjavax.swing.JFrame;进行引包还可以点击JFrame然后点击I...

取消回复欢迎 发表评论:

请填写验证码