• 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") {
                   
                    }
                }
            }
        }
    

      

  • 相关阅读:
    ES6核心内容精讲--快速实践ES6(三)
    ES6核心内容精讲--快速实践ES6(二)
    ES6核心内容精讲--快速实践ES6(一)
    webpack入门
    centos 7 nodejs 安装
    android结合Jenkins使用V2签名
    dockerfile 创建Jenkins镜像
    ubuntu docker 安装
    shell sed语法详解
    mac关于stf开源工具安装
  • 原文地址:https://www.cnblogs.com/janeaiai/p/9277638.html
Copyright © 2020-2023  润新知