|
|
@ -36,11 +36,11 @@ namespace Example2 |
|
|
|
/* To provide the HTTP Authentication (Basic/Digest). |
|
|
|
wssv.AuthenticationSchemes = AuthenticationSchemes.Basic; |
|
|
|
wssv.Realm = "WebSocket Test"; |
|
|
|
wssv.UserCredentialsFinder = identity => { |
|
|
|
wssv.UserCredentialsFinder = id => { |
|
|
|
var expected = "nobita"; |
|
|
|
return identity.Name == expected |
|
|
|
return id.Name == expected |
|
|
|
? new NetworkCredential (expected, "password", "gunfighter") |
|
|
|
: null; |
|
|
|
: null; // If the user credentials aren't found.
|
|
|
|
}; |
|
|
|
*/ |
|
|
|
|
|
|
@ -60,27 +60,30 @@ namespace Example2 |
|
|
|
() => new Chat ("Anon#") { |
|
|
|
Protocol = "chat", |
|
|
|
// To validate the Origin header.
|
|
|
|
OriginValidator = value => { |
|
|
|
OriginValidator = val => { |
|
|
|
// Check the value of the Origin header, and return true if valid.
|
|
|
|
Uri origin; |
|
|
|
return !value.IsNullOrEmpty () && |
|
|
|
Uri.TryCreate (value, UriKind.Absolute, out origin) && |
|
|
|
return !val.IsNullOrEmpty () && |
|
|
|
Uri.TryCreate (val, UriKind.Absolute, out origin) && |
|
|
|
origin.Host == "localhost"; |
|
|
|
}, |
|
|
|
// To validate the Cookies.
|
|
|
|
CookiesValidator = (req, res) => { |
|
|
|
// Check the Cookies in 'req', and set the Cookies to send to the client with 'res'
|
|
|
|
// if necessary.
|
|
|
|
foreach (Cookie cookie in req) { |
|
|
|
cookie.Expired = true; |
|
|
|
res.Add (cookie); |
|
|
|
} |
|
|
|
|
|
|
|
return true; |
|
|
|
return true; // If valid.
|
|
|
|
} |
|
|
|
}); |
|
|
|
*/ |
|
|
|
|
|
|
|
wssv.Start (); |
|
|
|
if (wssv.IsListening) { |
|
|
|
Console.WriteLine ("Listening on port {0}, providing services:", wssv.Port); |
|
|
|
Console.WriteLine ("Listening on port {0}, and providing WebSocket services:", wssv.Port); |
|
|
|
foreach (var path in wssv.WebSocketServices.Paths) |
|
|
|
Console.WriteLine ("- {0}", path); |
|
|
|
} |
|
|
|