Нужно добавить блок try catch - PullRequest
0 голосов
/ 09 апреля 2020

Я новичок в nodejs, поэтому ниже приведен мой код, мне нужно добавить блоки try-catch для моего кода ниже, нужна некоторая помощь, чтобы сделать это, потому что для нововведений ниже, мой недавно созданный код веб-сокета мне нужен добавьте блоки try-catch для этого, пожалуйста, помогите мне кому-нибудь


    var WebSocket = require('ws');
    //var Stomp = require('stompjs');

    function CustomWebSocketListener(config) {
        RED.nodes.createNode(this,config);
        var node = this;
        node.on('input', function(msg) {

            let temp =msg.payload;
            let urllist = temp.url;
            let urls=[]

            if(global.websocket!=null || global.websocket!=undefined){
                let connections=global.websocket;
                console.log("global")
                if(global.isAccessTokenExpired){
                    for(let k in connections) {
                       connections[k].close();
                       connections[k].reconnect=false
                       console.log('connection closed:::');
                    }
                    urls=urllist;
                }
                else{
                    for(let i=0;i<urllist.length;i++){
                      let group=urllist[i].split("/")[7].split("?");
                      if(!connections[group[0]]){
                         urls.push(urllist[i])
                      }
                    }
                }
            }
            else{
                urls=urllist;
            }

            console.log("urls.length::::"+urls.length)
            if(urls.length > 0){
                            for(let i=0;i<urls.length;i++){
                            console.log(':::::::for loop:::::::')
                            console.log('url----'+urls[i])
                            function connect(urlIndex) {
                                let ws;
                                if(urlIndex!=undefined||urlIndex!=null){
                                    ws = new WebSocket(urls[urlIndex]);
                                }
                                else{
                                    ws = new WebSocket(urls[i]);    
                                }
                                ws.index=i;
                                ws.reconnect=true;
                                ws.onopen = function() {

                                };

                              ws.onmessage = function(e) {
                                console.log('Message:', e.data);
            console.log('Socket is closed. Reconnect will be attempted in 30 second.', e.reason);
                                setTimeout(function() {
                                    console.log("onclose ----ws reconnect"+ws.reconnect)
                                    if(ws.reconnect){
                                        console.log("inside if reconnect")
                                    connect(ws.index);
                                    }
                                }, 30000);
                              };

                              ws.onerror = function(err) {
                                console.error('Socket encountered error: ', err.message, 'Closing socket');
                                ws.close();
                              };
                             if(global.websocket==null || global.websocket==undefined){
                                 global.websocket={};
                                 console.log(global.websocket)
                                 global.websocket[urls[i]]=ws;
                             }
                             else{
                                 global.websocket[urls[i]]=ws;
                             }
                            }
                            connect();

                            }

            }


        });
    }
    RED.nodes.registerType("custom-websocketlistener",CustomWebSocketListener);
}

Спасибо всем, кто помог бы мне с этим

1 Ответ

0 голосов
/ 09 апреля 2020

вы можете использовать прямо там, где хотите, вот так ...

try{
//whatever you want
}
catch(e){
//whatever you want
}

В вашем коде вы можете использовать вот так

  try {
    RED.nodes.createNode(this, config)
    var node = this
    node.on('input', function(msg) {
      let temp = msg.payload
      let urllist = temp.url
      let urls = []

      if (global.websocket != null || global.websocket != undefined) {
        let connections = global.websocket
        console.log('global')
        if (global.isAccessTokenExpired) {
          for (let k in connections) {
            connections[k].close()
            connections[k].reconnect = false
            console.log('connection closed:::')
          }
          urls = urllist
        } else {
          for (let i = 0; i < urllist.length; i++) {
            let group = urllist[i].split('/')[7].split('?')
            if (!connections[group[0]]) {
              urls.push(urllist[i])
            }
          }
        }
      } else {
        urls = urllist
      }

      console.log('urls.length::::' + urls.length)
      if (urls.length > 0) {
        for (let i = 0; i < urls.length; i++) {
          console.log(':::::::for loop:::::::')
          console.log('url----' + urls[i])
          function connect(urlIndex) {
            let ws
            if (urlIndex != undefined || urlIndex != null) {
              ws = new WebSocket(urls[urlIndex])
            } else {
              ws = new WebSocket(urls[i])
            }
            ws.index = i
            ws.reconnect = true
            ws.onopen = function() {}

            ws.onmessage = function(e) {
              console.log('Message:', e.data)
              console.log('Socket is closed. Reconnect will be attempted in 30 second.', e.reason)
              setTimeout(function() {
                console.log('onclose ----ws reconnect' + ws.reconnect)
                if (ws.reconnect) {
                  console.log('inside if reconnect')
                  connect(ws.index)
                }
              }, 30000)
            }

            ws.onerror = function(err) {
              console.error('Socket encountered error: ', err.message, 'Closing socket')
              ws.close()
            }
            if (global.websocket == null || global.websocket == undefined) {
              global.websocket = {}
              console.log(global.websocket)
              global.websocket[urls[i]] = ws
            } else {
              global.websocket[urls[i]] = ws
            }
          }
          connect()
        }
      }
    })
  } catch (e) {
    console.log(e)
  }
}
...