zoukankan      html  css  js  c++  java
  • websocket 通信

    最近做的项目,需要小数据实时通信,比如说学生登录,教师端实时显示登录信息;教师控制学生端进入新的页面或者同一控制流程,这些都可以用到websocket。

    在我理解,websocket像是一个镜子,可以折射所有的光芒。任何一个连接websocket 服务器的客户端都可以发信息给服务器,服务器会转发出这些信息给所有的客户端。也可以给每个客户端指定名称,比如一个客户端为A,一个客户端为B,A想要给B发送数据的时候,A向服务器发送数据的目标名称可以设置为B ,这样B就会接收到信息了,而C,D用户接收不到信息。 

    1,首先建立websocket 服务器

    2,客户端建立与服务器的连接

        function (result) {
                    if (result != null) {
                        var data = JSON.parse(result.json);
                        nNetIP = data.socketIP;
                        nNetPort = data.websocketPort;
                        nSocketPort = data.socketPort;
                        try {
                            var address = "ws://" + nNetIP + ":" + nNetPort;
                            window.ws = new wsImpl(address);
    
                            ws.onopen = function () {
                                //开始连接
                                ws.send(JSON.stringify({
                                    "MsgType": "login",
                                    "userID": usercode,
                                    "userType": "auctionstudent"//指定当前客户端的名称
                                }))
    
                            };
                            //返回数据
                            ws.onmessage = function (evt) {
                                processInformation(evt.data);
                            };
                            ws.onclose = function () {
                                //开始关闭
    
                            }
                            ws.onerror = function () {
    
                                //发生错误
                                console.log("错误");
                                ws = new wsImpl(address);
    
                            }
    
                            window.onbeforeunload = function (event) {
                                console.log("关闭WebSocket连接!");
                                webSocket.close();
                 }
                        } catch (err) {
    
                        }
                    }
                }
    

    3,发送数据(指定接收用户)

      ws.send(
                        JSON.stringify({
                            "MsgType": "message",
                            "message": { "type": "sendenterauction", "sacode": sacode, "currtime": result.currtime },
                            "targetUserType": ["auctionstudent"]//指定接收目标名称
                        }));

    4,接收数据

     //处理接收到的信息
        function processInformation(data) {
            var info;
            try {
                info = JSON.parse(data);
            }
            catch (err) {
                //在此处理错误 
                return;
            }
    
            if (info.sacode == sacode) {
    
                
                if (info.type == "sendenterauction") {
                   
                    }
                }
            }
        }
    

      

  • 相关阅读:
    自定义WordPress文件上传路径
    PHP Warning: preg_match(): JIT compilation failed: no more memory in
    Mac下PHP7.1+Nginx安装和配置
    bootstrap modal插件弹出窗口如何限制最大高度,并且在内容过多时可以滚动显示
    Language Tool ,a plugin for TeXStudio
    平均值mean,众数mode,中值median 和 标准差stddev
    LaTeX Software & Manuals
    MAFFT多重序列比对--(附比对彩标方法)
    Markdown语法 (中文版)
    在64位系统上不能安装Matlab notebook的解决方案
  • 原文地址:https://www.cnblogs.com/janeaiai/p/9277638.html
Copyright © 2011-2022 走看看