websocket html5 客户端测试代码

本文提供了一个简单的WebSocket客户端测试页面,用于连接、发送消息及断开连接的测试。通过按钮操作实现连接建立与消息发送,并在文本区域展示日志信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试 websocket 客户端的连接、发送消息和断开,生成一个面板用于显示 log,代码功能单一,便于测试。

index.html


<html>
    <head>
        <meta charset="utf-8">
        <title>WebSoket Demo</title>
        <script type="text/JavaScript">
            // tips: WebSocket 调试脚本
            var WebSocket = WebSocket || window.WebSocket || window.MozWebSocket;
            // 验证浏览器是否支持WebSocket协议
            if (!WebSocket) {
                alert("WebSocket not supported by this browser!");
            }
            else {
                var g_ws = null;

                function Display() {
                    // 载入上次记录的数据 //...
                    console.log("websocket 测试");
                }

                var log = function (s) {
                    if (document.readyState !== "complete") {
                        log.buffer.push(s);
                    } else {
                        document.getElementById("contentId").value += (s + "\n");
                    }
                }

                function CreateConnect () {
                    var msg = document.getElementById("wsUrlId");
                    console.log("CreateConnect(), url: " + msg.value);
                    if (g_ws == null) {
                        var wsUrlValue = msg.value;

                        try {
                            g_ws = new WebSocket(wsUrlValue);
                            // 监听消息
                            g_ws.onmessage = function (event) {
                                //valueLabel.innerHTML+ = event.data;
                                log("onmessage(), 接收到服务器消息: " + event.data);
                            };
                            // 打开 WebSocket
                            g_ws.onclose = function (event) {
                                //WebSocket Status:: Socket Closed
                                log("onclose(), Socket 已关闭!");
                                g_ws = null;
                            };
                            // 打开WebSocket
                            g_ws.onopen = function (event) {
                                //WebSocket Status:: Socket Open
                                // 发送一个初始化消息
//                            g_ws.send("Hello, Server!");
                                log("onopen(), Socket 连接成功!");
                            };
                            g_ws.onerror = function (event) {
                                //WebSocket Status:: Error was reported
                                log("onerror(), Socket 发生错误!");
                            };
                        }
                        catch (e) {
                            g_ws = null;
                            log("连接异常, 重置 websocket");
                        }
                    }
                }
                
                function SendMsg() {
                    var msg = document.getElementById("messageId");
                    console.log("SendMsg(), msg: " + msg.value);
                    if (g_ws != null) {
                        //alert(msg.value);
                        log("发送 Socket 消息: " + msg.value);
                        g_ws.send(msg.value);
                    }
                    else {
                        log("Socket 还未创建!, msg: " + msg.value);
                    }
                }

                function CloseConnect () {
                    console.log("CloseConnect()");
                    if (g_ws != null) {
                        g_ws.close();
                    }
                }
            }
        </script>
    </head>

    <body onload="Display()">
        <div id="valueLabel"></div>
        <textarea rows="20" cols="30" id="contentId"></textarea>
        <br/>
        <input name="wsUrl" id="wsUrlId" value="ws://localhost:8082/springmvc/websocket"/>
        <button id="createButton" onClick="javascript:CreateConnect()">Create</button>
        <button id="closeButton" onClick="javascript:CloseConnect()">Close</button>
        <br/>
        <input name="message" id="messageId" value="Hello, Server!"/>
        <button id="sendButton" onClick="javascript:SendMsg()">Send</button>
    </body>
</html>


WebSocket客户端和服务端实例源码 WebSocket ws实例 HTML5 用java实现的服务端 Websocket与服务器的正常通信 众所周知,Web 应用的交互过程通常是客户端通过浏览器发出一个请求,服务器端接收请求后进行处理并返回结果给客户端客户端浏览器将信息呈现,这种机制对于信息变化不是特别频繁的应用尚可,但对于实时要求高、海量并发的应用来说显得捉襟见肘,尤其在当前业界移动互联网蓬勃发展的趋势下,高并发与用户实时响应是 Web 应用经常面临的问题,比如金融证券的实时信息,Web 导航应用中的地理位置获取,社交网络的实时消息推送等。 传统的请求-响应模式的 Web 开发在处理此类业务场景时,通常采用实时通讯方案,常见的是: 轮询,原理简单易懂,就是客户端通过一定的时间间隔以频繁请求的方式向服务器发送请求,来保持客户端和服务器端的数据同步。问题很明显,当客户端以固定频率向服务器端发送请求时,服务器端的数据可能并没有更新,带来很多无谓请求,浪费带宽,效率低下。 基于 Flash,AdobeFlash 通过自己的 Socket 实现完成数据交换,再利用 Flash 暴露出相应的接口为 JavaScript 调用,从而达到实时传输目的。此方式比轮询要高效,且因为 Flash 安装率高,应用场景比较广泛,但在移动互联网终端上 Flash 的支持并不好。IOS 系统中没有 Flash 的存在,在 Android 中虽然有 Flash 的支持,但实际的使用效果差强人意,且对移动设备的硬件配置要求较高。2012 年 Adobe 官方宣布不再支持 Android4.1+系统,宣告了 Flash 在移动终端上的死亡。 从上文可以看出,传统 Web 模式在处理高并发及实时性需求的时候,会遇到难以逾越的瓶颈,我们需要一种高效节能的双向通信机制来保证数据的实时传输。在此背景下,基于 HTML5 规范的、有 Web TCP 之称的 WebSocket 应运而生。 早期 HTML5 并没有形成业界统一的规范,各个浏览器和应用服务器厂商有着各异的类似实现,如 IBM 的 MQTT,Comet 开源框架等,直到 2014 年,HTML5 在 IBM、微软、Google 等巨头的推动和协作下终于尘埃落地,正式从草案落实为实际标准规范,各个应用服务器及浏览器厂商逐步开始统一,在 JavaEE7 中也实现了 WebSocket 协议,从而无论是客户端还是服务端的 WebSocket 都已完备,读者可以查阅HTML5 规范,熟悉新的 HTML 协议规范及 WebSocket 支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值