在javascript事件中访问外部变量

时间:2017-11-08 16:42:18

标签: javascript node.js websocket

我正在构建一个服务器,它充当浏览器和使用websockets的第三方服务之间的代理。一般顺序是

  1. 浏览器通过websocket连接到服务器
  2. 验证后,服务器通过websocket连接到第三方服务。
  3. 第三方服务向服务器发送消息,将消息中继回浏览器
  4. 我试图解决的一个问题是断开websocket与服务器的连接 - >第三方服务,只要浏览器的套接字断开连接。

    就此而言,我正在考虑维护一个像下面的对象

    var thirdPartySockets = {};
    

    每当客户端套接字连接时:

    var ServerSocket = connectToThirdParty (clientSocketId, URL);
    thirdPartySockets [clientSocketId] = ServerSocket;
    

    connectToThirdParty的代码

    var connectToThirdParty = function(clientSocketId, URL){
    
        var client = new WebSocketClient();
    
        client.on('connectFailed', function(err) {
            console.log('connection failed')
        });
    
        client.on('connect', function(connection) {
    
            connection.on('error', function(err) {
    
            });
    
            connection.on('close', function() {
               // attempt reconnection
            });
    
            connection.on('message', function(message) {   
                // send back to client
            });
    
        });
    
        client.connect(URL);
        return client
    }
    

    这里的问题是我试图在浏览器套接字断开连接时断开服务器套接字。我似乎无法访问disconnect事件中的thirdPartySocket列表对象。

    var thirdPartySockets = {};
    
     io.on('connection', function(socket){
    
            socket.on('disconnect', function(){
               // how do i access the thidPartySockets object here?
            });
        });
    

    有没有更好的方法来处理这种情况?

0 个答案:

没有答案