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
|
|
|
|
{
|
2012-08-06 13:34:39 +08:00
|
|
|
public class Chat : WebSocketService
|
|
|
|
{
|
2012-10-26 13:58:50 +08:00
|
|
|
private static int _num = 0;
|
2012-10-22 13:58:43 +08:00
|
|
|
|
|
|
|
private string _name;
|
|
|
|
|
2013-09-13 15:54:41 +08:00
|
|
|
private string getName ()
|
2012-10-22 13:58:43 +08:00
|
|
|
{
|
2013-09-13 15:54:41 +08:00
|
|
|
return Context.QueryString ["name"] ?? ("anon#" + getNum ());
|
2012-10-23 14:39:31 +08:00
|
|
|
}
|
|
|
|
|
2013-09-13 15:54:41 +08:00
|
|
|
private int getNum ()
|
2012-10-23 14:39:31 +08:00
|
|
|
{
|
2013-09-13 15:54:41 +08:00
|
|
|
return Interlocked.Increment (ref _num);
|
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-13 15:54:41 +08:00
|
|
|
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-13 15:54:41 +08:00
|
|
|
Broadcast (String.Format ("{0} got logged off...", _name));
|
2012-08-06 13:34:39 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|