导读
小编昨天花了一个小时自制了一个WebSocket测试小工具,和网络上搜索到的在线工具类似,可以实现WebSocket的连接、断开和发送等功能,同时还加上了一些颜色来区别。那么我们先来看看效果吧,这里展示的是实时日志功能。
此篇文章仅展示前端代码(代码部分请左右滑动查看)。

代码部分
看完效果之后话不多说直接上WebSocket核心代码,通常分为连接、接收、发送、异常、关闭连接五个模块。以下是伪代码:
if ("WebSocket" in window){try{websocket = new WebSocket(wsUrl)}catch(err){....}}else{alert("您的浏览器不支持 WebSocket!");return;}//连接发生错误的回调方法websocket.onerror = function () {....};//连接成功建立的回调方法websocket.onopen = function () {....}//接收到消息的回调方法websocket.onmessage = function (event) {....}//连接关闭的回调方法websocket.onclose = function () {....}//发送消息websocket.send = function () {...}
结合简单的html、css、js即可完成小工具,由于小编非专业前端,还请见谅,具体代码如下:
<!DOCTYPE html><html><head><title>iFillDream-WebSocket小工具</title><style type="text/css">#bq {height: 40px;line-height: 40px;position: fixed;bottom: 0;width: 100%;text-align: center;color: #fff;font-family: Arial;font-size: 12px;letter-spacing: 1px;}</style><meta content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no' name='viewport' /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body><input id="wsUrl2" type="text" placeholder="欢迎使用iFillDream开发的Websocket小工具" style="width:590px";/><button onclick="setWsUrl()">连接</button><button onclick="closeWebSocket()" title="断开WebSocket连接">断开</button><button onclick="testDemo()" title="测试用例">用例</button><br><input id="text" type="text" style="width:590px"/><button onclick="send()" title="若发送失败请检查您的WebSocket发送功能是否正常">发送</button><br/><hr/><div id="message" style="font-size:13px"></div><br><b style="font-size:12px;cursor:pointer;" onclick="copyText('wsUrl2')" title="点击复制当前WebSocket地址">当前连接地址:</b></span><span id="nowUrl" style="font-size:12px;color: green;cursor:pointer;" onclick="setWsUrl()" title="点击刷新,重连当前WebSocket">暂无</span><br><br><div id="bq"><b><a href="https://mp.weixin.qq.com/s?__biz=MzU5NDMyODA2MQ==&mid=100000095&idx=1&sn=ff09d8155c86d2f4ce5e3d12dee0224f&chksm=7e03a1cd497428dbd3baa1a8bbfe3148d7213c249c15175d2adb658facb0eedfc1aa8706879d#rd">欢迎搜索微信公众号:iFillDream 版权所有:©2020 iFillDream Corporation. All rights reserved.</b></a></div></body><script type="text/javascript">var websocket = null;var wsUrl = null;var tempUrl = null;if ("WebSocket" in window){document.getElementById('message').innerHTML = '您的浏览器支持 WebSocket!<br/>';}else{alert("您的浏览器不支持 WebSocket!");}//将消息显示在网页上function setMessageInnerHTML(innerHTML) {console.log(innerHTML);document.getElementById('message').innerHTML += innerHTML + '<br/>';window.scrollTo(0, document.body.scrollHeight)}//关闭WebSocket连接function closeWebSocket() {websocket.close();}//发送消息function send() {var message = document.getElementById('text').value;if(message == null || message == undefined || message == ''){document.getElementById('message').innerHTML += '发送内容不能为空<br/>';}websocket.send(message);}//测试用例function testDemo() {document.getElementById('wsUrl2').value='ws://echo.websocket.org';setWsUrl();}//设置WebSocket链接地址function setWsUrl() {document.getElementById('message').innerHTML = '清空屏幕成功<br/>';if( websocket != null ){temp = wsUrl;websocket.close();document.getElementById('message').innerHTML += '已关闭之前的WebSocket:' + temp +'<br/>';}wsUrl = document.getElementById('wsUrl2').value;document.getElementById('nowUrl').innerText=wsUrlif ("WebSocket" in window){try{websocket = new WebSocket(wsUrl)}catch(err){document.getElementById('message').innerHTML = "<span style='color: red;'>WebSocket连接发生错误:" + err + "</span><br/>";}}else{alert("您的浏览器不支持 WebSocket!");return;}//连接发生错误的回调方法websocket.onerror = function () {document.getElementById('message').innerHTML = 'WebSocket连接发生错误' + wsUrl + '<br/>';setMessageInnerHTML("<span style='color: red;'>WebSocket连接发生错误"+ wsUrl + '</span><br/>');};//连接成功建立的回调方法websocket.onopen = function () {setMessageInnerHTML("<span style='color: green;'>WebSocket连接成功:" + wsUrl + '</span><br/>');}//接收到消息的回调方法websocket.onmessage = function (event) {setMessageInnerHTML(event.data);}//连接关闭的回调方法websocket.onclose = function () {setMessageInnerHTML("<span style='color: red;'>WebSocket连接关闭</span>");}}//此方法只针对input框function copyText(id){var o=document.getElementById(id);o.select(); // 选择对象document.execCommand("Copy");//复制document.getElementById('message').innerHTML += '已复制:' + wsUrl + '<br/>';}//监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。window.onbeforeunload = function () {closeWebSocket();}</script></html>
好了,到此就全部结束了,您学废了嘛。这里仅仅展示了实时日志的功能,WebSocket其实还有更多的玩法等你来探索。为此小编提供了线上版本,详细地址请点击阅读原文查看。
【更多精彩】

文章转载自笔记有云,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




