supersocket+controller+action
public class MasterServer : SuperSocket.SocketBase.AppServer<MasterSession>
{ } public class MasterSession: SuperSocket.SocketBase.AppSession<MasterSession>
{
protected override void HandleUnknownRequest(StringRequestInfo requestInfo)
{
Send(Const.None);
} protected override void OnSessionStarted()
{
Console.WriteLine($"{this.RemoteEndPoint} connected, " +
$"total={this.AppServer.SessionCount}");
} protected override void OnSessionClosed(CloseReason reason)
{
Console.WriteLine($"{this.RemoteEndPoint} disconnected, " +
$"total={this.AppServer.SessionCount}");
}
} public class Master : CommandBase<MasterSession, StringRequestInfo>
{
public override void ExecuteCommand(MasterSession session, StringRequestInfo requestInfo)
{
if (requestInfo.Parameters.Length > )
{
string action = requestInfo.Parameters[];
string content = "";
if (requestInfo.Parameters.Length > )
{
content = requestInfo.Body.Trim().Substring(action.Length + );
}
if (action!=Const.ActionLogin && !session.Items.Keys.Contains(Const.User))
{
session.Send(Const.None);
return;
}
switch (action)
{
case Const.ActionLogin: Login(session, content);
break;
default: session.Send(Const.None);
break;
}
}
else
{
session.Send(Const.None);
}
} void Login(MasterSession session, string content)
{
var user = content.FromJson<DtoLogin>();
if (user.LoginName == "jonney" && user.Password == "")
{
user.IsLogined = true;
user.SessionId = Guid.NewGuid().ToString();
user.Users = new List<int>();
user.Users.Add();
}
session.Logger.Debug(user.ToJson());
if (user.IsLogined)
{
session.Items.Remove(Const.User);
session.Items.Add(Const.User, user);
}
session.Send(user.ToJson());
} }
using System.Collections.Generic; namespace PublicLib
{
public class DtoBase
{
public int CurPage { get; set; }
public int TotalPages { get; set; }
} public class DtoLogin: DtoBase
{
public string LoginName { get; set; }
public string Password { get; set; } public bool IsLogined { get; set; }
public string SessionId { get; set; }
public List<int> Users { get; set; }
} public class Const
{
public const string None = "None";
public const string User = "User";
public const string ControlerMaster = "Master";
public const string ActionLogin = "Login";
}
}
supersocket作为服务器处理Pda的请求,并返回json结果,demo代码。
supersocket+controller+action的更多相关文章
- 尝试asp.net mvc 基于controller action 方式权限控制方案可行性
微软在推出mvc框架不久,短短几年里,版本更新之快,真是大快人心,微软在这种优秀的框架上做了大量的精力投入,是值得赞同的,毕竟程序员驾驭在这种框架上,能够强力的精化代码,代码层次也更加优雅,扩展较为方 ...
- asp.net MVC中获取当前URL/Controller/Action
一.获取URL(ASP.NET通用): [1]获取完整url(协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [2]获取虚拟目录名+页面 ...
- Part 2 How are the URL's mapped to Controller Action Methods?
Part 2 How are the URL's mapped to Controller Action Methods? The answer is ASP.NET Routing.Notice t ...
- 返璞归真 asp.net mvc (3) - Controller/Action
原文:返璞归真 asp.net mvc (3) - Controller/Action [索引页] [源码下载] 返璞归真 asp.net mvc (3) - Controller/Action 作者 ...
- ASP.NET MVC和ASP.NET Core MVC中获取当前URL/Controller/Action (转载)
ASP.NET MVC 一.获取URL(ASP.NET通用): [1]获取完整url(协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [ ...
- 尝试asp.net mvc 基于controller action 方式权限控制方案可行性(转载)
微软在推出mvc框架不久,短短几年里,版本更新之快,真是大快人心,微软在这种优秀的框架上做了大量的精力投入,是值得赞同的,毕竟程序员驾驭在这种框架上,能够强力的精化代码,代码层次也更加优雅,扩展较为方 ...
- Only one complex type allowed as argument to a web api controller action.
错误内容: message":"An error has occurred.","exceptionMessage":"Only one c ...
- 找到多个与名为“xxx”的控制器匹配的类型。如果为此请求(“{controller}/{action}/{id}”)提供服务的路由没有指定命名空间以搜索与此请求相匹配的控制器,则会发生这种情况。
一次在建MVC 项目的进行开发的时候,因为后来想到了一个更好的项目名称,就把 Web项目的名称重命名 改了, 然后 程序集名称,默认命名空间,都改成新的了,刚建立的项目本身也不大,运行起来,总是报 & ...
- 找到多个与名为“Home”的控制器匹配的类型,如果为此请求(“{controller}/{action}/{id}”)提供服务的路由没有指定命名空间来搜索匹配此请求的
参考文章: http://blog.csdn.net/chengmodelong/article/details/41890229 https://www.cnblogs.com/zgqys1980/ ...
随机推荐
- 【转载】CSS规范
原文地址:http://www.cnblogs.com/whitewolf/p/4491707.html 目录 HTML 语法 HTML5 doctype 语言属性(Language attribut ...
- Java防盗链机制
对于防盗链技术,网上提供了很多很多的相关技术,但是不是特别复杂就是效果不好. 这里在网上找到一种思路,就是关于HTTP协议响应头中包含的Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可 ...
- [讨论] 全新首发WIN7 32&64 WINSXS进一步精简批处理公测
恶魔浮雕 发表于 2016-1-8 15:01:27 |https://www.itsk.com/forum.php?mod=viewthread&tid=362278&highlig ...
- mybatis批量更新 UPDATE mysql
oracle和mysql数据库的批量update在mybatis中配置不太一样: oracle数据库: <update id="batchUpdate" parameterT ...
- “不支持一个STA线程上针对多个句柄的WaitAll。”的解决方案
一.异常提示 不支持一个 STA 线程上针对多个句柄的 WaitAll. 出错界面如下图: 二.解决方法 先直接上解决方案吧.其实解决方法很简单如下面的代码直接把main函数的[STAThread]属 ...
- 51nod 1264 线段相交(几何)
题目链接:51nod 1264 线段相交 如果两条线段相交,则需满足一条线段的一个端点在另一条线段上,或者 两条线段都分别跨越另一条线段延伸的直线上.(如果点p1位于直线p3p4的一边,而点p2位于该 ...
- Android开发--Layout元素
1.TF类型 android:layout_alignParentStart="true/flase":贴紧父元素的左边缘 android:layout_alignParentEn ...
- PDF 补丁丁 0.4.2.950 测试版发布:按文件夹合并生成单独的PDF文件
新的测试版实现了将文件夹的内容合并为单独的PDF文件的功能.以下图为例讲解操作步骤. 点击工具栏的“合并文件”按钮,打开合并功能. 设M盘下有“test”和“test2”文件夹,里面包含了需要合并的文 ...
- 在chrome console加入jquery库
var jq = document.createElement('script'); jq.src = 'http://libs.baidu.com/jquery/1.9.1/jquery.min.j ...
- iOS开发UI篇—常见的项目文件介绍
iOS开发UI篇—常见的项目文件介绍 一.项目文件结构示意图 二.文件介绍 1.products文件夹:主要用于mac电脑开发的可执行文件,ios开发用不到这个文件 2.frameworks文件夹主要 ...