2012-08-06 13:34:39 +08:00
|
|
|
using System;
|
2012-10-26 13:58:50 +08:00
|
|
|
using System.Threading;
|
2012-08-06 13:34:39 +08:00
|
|
|
using WebSocketSharp;
|
|
|
|
using WebSocketSharp.Server;
|
|
|
|
|
2013-09-13 15:54:41 +08:00
|
|
|
namespace Example2
|
|
|
|
{
|
2014-09-06 16:50:10 +08:00
|
|
|
public class Chat : WebSocketBehavior
|
2012-08-06 13:34:39 +08:00
|
|
|
{
|
2014-10-03 14:32:50 +08:00
|
|
|
private string _name;
|
|
|
|
private static int _number = 0;
|
|
|
|
private string _prefix;
|
2013-10-02 13:39:56 +08:00
|
|
|
|
|
|
|
public Chat ()
|
|
|
|
{
|
2022-01-19 19:08:36 +08:00
|
|
|
_prefix = "anon#";
|
2013-10-02 13:39:56 +08:00
|
|
|
}
|
|
|
|
|
2022-01-19 19:08:36 +08:00
|
|
|
public string Prefix {
|
|
|
|
get {
|
|
|
|
return _prefix;
|
|
|
|
}
|
|
|
|
|
|
|
|
set {
|
|
|
|
_prefix = !value.IsNullOrEmpty () ? value : "anon#";
|
|
|
|
}
|
2013-10-02 13:39:56 +08:00
|
|
|
}
|
2012-10-22 13:58:43 +08:00
|
|
|
|
2013-09-13 15:54:41 +08:00
|
|
|
private string getName ()
|
2012-10-22 13:58:43 +08:00
|
|
|
{
|
2022-01-19 19:14:30 +08:00
|
|
|
var name = QueryString["name"];
|
|
|
|
|
2015-11-27 16:38:37 +08:00
|
|
|
return !name.IsNullOrEmpty () ? name : _prefix + getNumber ();
|
2012-10-23 14:39:31 +08:00
|
|
|
}
|
|
|
|
|
2014-10-03 14:32:50 +08:00
|
|
|
private static int getNumber ()
|
2012-10-23 14:39:31 +08:00
|
|
|
{
|
2014-10-03 14:32:50 +08:00
|
|
|
return Interlocked.Increment (ref _number);
|
2012-10-22 13:58:43 +08:00
|
|
|
}
|
|
|
|
|
2015-11-30 11:06:31 +08:00
|
|
|
protected override void OnClose (CloseEventArgs e)
|
2012-10-22 13:58:43 +08:00
|
|
|
{
|
2022-01-20 20:01:31 +08:00
|
|
|
var fmt = "{0} got logged off...";
|
|
|
|
var msg = String.Format (fmt, _name);
|
|
|
|
|
|
|
|
Sessions.Broadcast (msg);
|
2012-10-22 13:58:43 +08:00
|
|
|
}
|
|
|
|
|
2013-09-13 15:54:41 +08:00
|
|
|
protected override void OnMessage (MessageEventArgs e)
|
2012-10-22 13:58:43 +08:00
|
|
|
{
|
2022-01-20 20:05:25 +08:00
|
|
|
var fmt = "{0}: {1}";
|
|
|
|
var msg = String.Format (fmt, _name, e.Data);
|
|
|
|
|
|
|
|
Sessions.Broadcast (msg);
|
2012-10-22 13:58:43 +08:00
|
|
|
}
|
|
|
|
|
2015-11-30 11:06:31 +08:00
|
|
|
protected override void OnOpen ()
|
2012-08-06 13:34:39 +08:00
|
|
|
{
|
2015-11-30 11:06:31 +08:00
|
|
|
_name = getName ();
|
2022-01-21 18:41:10 +08:00
|
|
|
|
|
|
|
var fmt = "{0} has logged in!";
|
|
|
|
var msg = String.Format (fmt, _name);
|
|
|
|
|
|
|
|
Sessions.Broadcast (msg);
|
2012-08-06 13:34:39 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|