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 ()
|
2013-12-03 14:45:14 +08:00
|
|
|
: this (null)
|
2013-10-02 13:39:56 +08:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
public Chat (string prefix)
|
|
|
|
{
|
2014-03-31 16:10:45 +08:00
|
|
|
_prefix = !prefix.IsNullOrEmpty () ? prefix : "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
|
|
|
{
|
2014-10-03 14:32:50 +08:00
|
|
|
var name = Context.QueryString["name"];
|
|
|
|
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
|
|
|
}
|
|
|
|
|
2013-09-13 15:54:41 +08:00
|
|
|
protected override void OnOpen ()
|
2012-10-22 13:58:43 +08:00
|
|
|
{
|
2013-09-13 15:54:41 +08:00
|
|
|
_name = getName ();
|
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
|
|
|
{
|
2013-09-16 13:33:26 +08:00
|
|
|
Sessions.Broadcast (String.Format ("{0}: {1}", _name, e.Data));
|
2012-10-22 13:58:43 +08:00
|
|
|
}
|
|
|
|
|
2013-09-13 15:54:41 +08:00
|
|
|
protected override void OnClose (CloseEventArgs e)
|
2012-08-06 13:34:39 +08:00
|
|
|
{
|
2013-09-16 13:33:26 +08:00
|
|
|
Sessions.Broadcast (String.Format ("{0} got logged off...", _name));
|
2012-08-06 13:34:39 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|