private void processarMensagemHandshake(Solicitacao objSolicitacao) { if (!"websocket".Equals(objSolicitacao.getStrHeaderValor("Upgrade"))) { return; } this.strSecWebSocketKey = objSolicitacao.getStrHeaderValor("Sec-WebSocket-Key"); if (string.IsNullOrEmpty(this.strSecWebSocketKey)) { return; } this.strSessao = objSolicitacao.strSessao; if (string.IsNullOrEmpty(this.strSessao)) { this.strSessao = Utils.getStrToken(32, DateTime.Now, this.intObjetoId); } Resposta objResposta = new Resposta(objSolicitacao); objResposta.intStatus = Resposta.INT_STATUS_CODE_101_SWITCHING_PROTOCOLS; objResposta.addHeader("Sec-WebSocket-Accept", this.strSecWebSocketAccept); this.responder(objResposta); this.booHandshake = true; this.onMensagemConnect(objSolicitacao); }
protected void addAcessControl(Resposta objResposta, Interlocutor objInterlocutor) { if (objResposta == null) { return; } if (!Resposta.INT_STATUS_CODE_200_OK.Equals(objResposta.intStatus)) { return; } if (objResposta.objSolicitacao == null) { return; } string strReferer = objResposta.objSolicitacao.getStrHeaderValor("referer"); if (string.IsNullOrEmpty(strReferer)) { return; } var uri = new Uri(strReferer); var strHost = ("http://" + uri.Host); if (objInterlocutor?.intHttpPorta != 80) { strHost = string.Format("http://{0}:{1}", uri.Host, objInterlocutor.intHttpPorta); } objResposta.addHeader("Access-Control-Allow-Credentials", "true"); objResposta.addHeader("Access-Control-Allow-Methods", "POST"); objResposta.addHeader("Access-Control-Allow-Origin", strHost); }