zoukankan      html  css  js  c++  java
  • C# winform websocket学习笔记(三)HTML客户端

    1 功能设计

    和上篇winform客户端类似,主要就是连接服务端;

    向服务端发送a,b的值;

    接收服务端的同步;

    产生的一些信息显示出来。

    2 界面设计

    3 代码实现

    此处代码很简单,而且是用纯JS,并没有引用jQuery之类的,参考了网上一些人的代码。

    由于代码不长,这里全部放出来

    <!DOCTYPE html>
    <html>
    
        <head>
            <meta charset="utf-8" />
            <title></title>
        </head>
    
        <body>
            <div>
                <form id="Form">
                    <label id="address">服务端地址:</label>
                    <input name="" id="IpAddress" value="ws://10.206.14.152:8080" />
                    <button type="submit" onclick="Connect();">连接</button><br />
    
    
                    <label id="a">a</label>
                    <input  name="" id="ValueA" value="" />
                    <button type="submit" onclick="SendData();">提交</button><br />
    
                    <label id="b">b</label>
                    <input name="" id="ValueB" value="" />
    
                </form>
                <div id="txtInfo" style="border: dashed 1px black;height: 500px; 500px;margin-top: 10px;"></div>
            </div>
            <script type="text/javascript">
                var test = function () {
    
                var print = document.getElementById('txtInfo');
                var form = document.getElementById('Form');
                var inputStrA = document.getElementById('ValueA');
                var ipaddress = document.getElementById('IpAddress').value;
    
                print.innerHTML += "connecting to server ..<br/>";
    
                //参数即想要连接服务器的ip。 服务器可以是node.js, 也可以是其他项目,如c#
                //window.ws = new WebSocket('ws://10.206.14.152:8080/'); //连接服务
                //window.ws = new WebSocket('ws://192.168.43.78:8080/'); //连接服务
                window.ws = new WebSocket(ipaddress); //连接服务
    
    
                //监听消息状态
                ws.onmessage = function (msg) {
                    var jsobj = JSON.parse(msg.data);//json字符串转为对象
                    document.getElementById('ValueA').value = jsobj.a;//写入输入框中
                    document.getElementById('ValueB').value = jsobj.b;
    
                    print.innerHTML += msg.data + '<br/>'
                }
                //监听链接状态
                ws.onopen = function () {
                    print.innerHTML += 'connection open <br/>'
                }
                //监听关闭状态
                ws.onclose = function () {
                    print.innerHTML += 'connection closed<br/>';
                }
    
                //向服务器端发送消息
                form.addEventListener('submit', function (e) {
                    e.preventDefault();
                    //序列化后的字符串发给服务端,服务端以字节数组格式接收,若转成字符串并添加部分信息再转回字节数组时,string.format函数会报错
                    //var jsonObj = { "name": "zhangsan", "age": 18 };
                    //传入一个json字符串进行测试,服务器会进行判断。
                    //ws.send(JSON.stringify(jsonObj));
                    //ws.send(jsonObj);
                    //传入一个非json字符串进行测试,服务器会进行判断。
                    //ws.send("test"); 
                })
            }
                //window.onload = test();
    
            function Connect() {
                test();
            }
    
            function SendData() {
                var valueA = document.getElementById('ValueA').value;
                var valueB = document.getElementById('ValueB').value;
    
                if (valueA.length == 0) { valueA = "-"; }
                if (valueB.length == 0) { valueB = "-"; }
    
                var jsonobj = {
                    "a": valueA,
                    "b": valueB
                };
                var jsonstr = JSON.stringify(jsonobj);
    
                //初始化WebSocket
                //InitWebSocket();
                //如果WebSocket打开,发送数据
                if (ws.OPEN && ws.readyState == 1) {
                    ws.send(jsonstr);
                }
                console.log(ws.readyState);
                //如果WebSocket关闭,显示消息
                if (ws.readyState == 2 || ws.readyState == 3) {
                    console.log("进来关闭函数了")
                    alert("WebSocket关闭了,无法发送数据");
                }
            }
            </script>
    
        </body>
        
    </html>

    项目全部代码可以在服务端那篇末尾下载~

  • 相关阅读:
    简单工厂设计模式
    MVC备忘
    在MVC后台代码中想实现删除时弹出"确认删除"效果
    集合
    嵌套
    整理 补课内容
    百鸡百钱
    ////输入一个100以内的数,判断是不是正整数;
    课后题 5 6
    课后题3,4
  • 原文地址:https://www.cnblogs.com/ygxddxc/p/13215536.html
Copyright © 2011-2022 走看看