2012-07-18 145 views
2

我有一个客户端使用代理来控制客户端的Internet连接。 如何将Websocket标头中的用户/身份验证值传递给代理。发送代理服务器验证通过Websocket到代理服务器

我正在使用标准的Netty植入。

public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { 
    final String funcName = "messageReceived - "; 
    try { 
     Object msg = e.getMessage(); 
     logger.debug(funcName + msg + "class" + msg.getClass().getName()); 
     ThreadParams.setLoggingEnabled(true); 
     if (msg instanceof HttpRequest) { 
      handleHttpShakeHand(ctx, (HttpRequest) msg); 
      // TaUtils.sleep(5000); 
     } else if (msg instanceof WebSocketFrame) { 
      handleWebSocketFrame(ctx, (WebSocketFrame) msg); 
     } 
    } catch (Throwable t) { 
     logger.error(funcName + "error: ", t); 
    } 
} 

private void handleHttpShakeHand(ChannelHandlerContext ctx, HttpRequest req) throws Exception { 

// Handshake 
WebSocketServerHandshakerFactory wsFactory = new WebSocketServerHandshakerFactory(
     this.getWebSocketLocation(req), null, false); 
this.handshaker = wsFactory.newHandshaker(req); 
if (this.handshaker == null) { 
    wsFactory.sendUnsupportedWebSocketVersionResponse(ctx.getChannel()); 
} else { 
    this.handshaker.performOpeningHandshake(ctx.getChannel(), req); 
} 

return; 

}

在我使用Chrome的对象打开与服务器的WebSocket的客户端。

ws = new WebSocket(localStorage["wsPath"]); 
    ws.onclose = onClose; 
    ws.onopen = onOpen; 
    ws.onerror = onError; 

塔米尔

回答

0

目前的解决方案是使用SSL证书以识别与该代理服务器和旁路网络插座认证。 向前迈进这是明文解决方案中的一个悬而未决的问题。