//public ClientEtiquette(Uri remoteUri, string origin, HttpCookieCollection cookies, IDictionary<string, string> extraFields) // : this(remoteUri, origin) //{ // this.cookies = cookies; // this.extraFields = extraFields; //} public void GiveHandshake(IWebSocket webSocket, Action handShakenCallback) { if (webSocket == null || !webSocket.IsConnected || handShakenCallback == null) { return; } var resourceName = uri.PathAndQuery; var host = uri.WebSocketAuthority(); var handshake = new ClientHandshake(resourceName, host, origin) { ExtraFields = extraFields, Cookies = cookies }; var state = new GiveHandshakeState { WebSocket = webSocket, Callback = handShakenCallback, Handshake = handshake }; var handshakeBuffer = handshake.ToByteArray(); webSocket.BeginSend(handshakeBuffer, 0, handshakeBuffer.Length, OnGivingHandshake, state); }