// As client
private HandshakeRequest createHandshakeRequest()
{
var path = _uri.PathAndQuery;
var host = _uri.Port == 80
? _uri.DnsSafeHost
: _uri.Authority;
var req = new HandshakeRequest (path);
req.AddHeader ("Host", host);
if (_origin.Length > 0)
req.AddHeader ("Origin", _origin);
req.AddHeader ("Sec-WebSocket-Key", _base64key);
if (!_protocols.IsNullOrEmpty ())
req.AddHeader ("Sec-WebSocket-Protocol", _protocols);
var extensions = createRequestExtensions ();
if (extensions.Length > 0)
req.AddHeader ("Sec-WebSocket-Extensions", extensions);
req.AddHeader ("Sec-WebSocket-Version", _version);
if (_preAuth && _credentials != null)
req.SetAuthorization (new AuthenticationResponse (_credentials));
if (_cookies.Count > 0)
req.SetCookies (_cookies);
return req;
}