介绍
怎么在。net核心中使用FastHttpApi构建一个网站聊天室?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
<强>创建项目强>
使用FastHttpApi构建一个web服务只需要创建一个普通ConsoleApp(控制台应用)
创建项目后需要在Nuget中添加引用FastHttpApi
只需要简单地引用Beetlex。FastHttpApi即可构建基于Http和Websocket通讯应用。
<>强创建逻辑强>
FastHttpApi对类和方法没有太多规则约束,只需要在类上定义一个控制器标签即可,接下来实现一个简单的网聊天室
(控制器) ,public class 控制器 ,{ ,//用户登陆 ,public bool 登录(string ,昵称,IHttpContext 上下文) ,{=,,context.Session.Name 昵称; ,ActionResult result =, new ActionResult ();=,,result.Data  new {, name =,绰号,message =,“login",, type =,“login",, time =, DateTime.Now.ToString (“T"),}; ,context.SendToWebSocket(结果); ,return 真实; ,} ,//获取在线用户 ,public object  ListOnlines (IHttpContext 上下文) ,{ 得到,return  r context.Server.GetWebSockets拷贝() where 才能;r.Session.Name  !=零 select 才能;new  {r.Session.Name的不同之处是,IP =, r.Session.RemoteEndPoint.ToString (),}; ,} ,//发送聊天信息 ,public bool 谈话(string 绰号,string 消息,IHttpContext 上下文) ,{ ,ActionResult result =, new ActionResult ();=,,result.Data  new {, name =,绰号,消息,type =,“talk",, time =, DateTime.Now.ToString (“T"),}; ,context.SendToWebSocket(结果); ,return 真实; ,} 以前,}>以上代码分别定义登陆,获取在线用户和碱性方法,方法的定义同样也是没有约束性,对于IHttpContext这些参数都是根据自己需要定义,如果不需要则不用在方法中定义它。接下来的事情就是要在页面上调用它,大家知道在页面调用http或websocket需要定义一些代码和指定相应的URL。但Beetlex.FastHttpApi提供一个非常便利的方式,通过安装一个插件可以自动生成这些代码插件安装介绍(暂只支持vs2017)。当插件安装完成后只需要设置类文件的自定义工具即可
插件会在当前类文下生成一个js文件,文件里把调用方法的URL和参数都定义完成
var 登录URL=& # 39;美元/登录# 39;; useHttp function $登录(昵称) { ,return api(登录url,美元{昵称:昵称},useHttp) .sync (); } function 登录异步美元(昵称,useHttp) { ,return api(登录url,美元{昵称:昵称},useHttp); } var ListOnlines url=& # 39;美元/listonlines& # 39;; function ListOnlines美元(useHttp) { ,return api (ListOnlines美元url, {}, useHttp) .sync (); } function ListOnlines异步(useHttp)美元 { ,return api (useHttp ListOnlines美元url, {}); } var $和$ url=& # 39;/谈# 39;; function 谈论美元(昵称、消息useHttp) { ,return api($和$ url,{昵称:昵称、消息:消息},useHttp) .sync (); } function 讨论异步美元(昵称、消息、useHttp) { ,return api($和$ url,{昵称:昵称、消息:消息},useHttp); }这个文件非常简单,主要包括URL,同步方法和异步方法。这个js文件需要依赖FastHttpApi。js才能使用,所以在页面上必须把这个文件也引用上。接下来就是页面脚本的使用
& lt; script> ,function 接收(结果),{ ,if (result.Data.type ==, & # 39;登录# 39;,| |,result.Data.type ==, & # 39;退出# 39;),{ ,ListOnlines异步美元(). execute (function (结果),{ 时间=listUserControl.Data 才能;result.Data; ,}); ,} ,messages.push (result.Data); ,var objDiv =, . getelementbyid (“lstTalk");=,,objDiv.scrollTop  objDiv.scrollHeight; ,} ,async function  sendMessage (), { 美元,var msg =, (& # 39; # talkMsg& # 39;) .val (); ,if (味精),{ ,警报(“enter message"); ,返回; ,} ,var result =, await 谈论美元(昵称,味精); ,if (result.Code !=, 200) ,警报(result.Error); 其他的, ,$ (& # 39;# talkMsg& # 39;) .val (& # 39; & # 39;); ,} ,async function 登录(),{ 美元,nickName =,(& # 39; #用户名# 39;).val (); ,if (昵称!),{ ,警报(“enter 你名字!“) ,返回; ,} ,var result =, await 美元登录(昵称); ,if (result.Code ==, 200), { ,$(& # 39;#登陆条# 39;)hide (); ,$ (& # 39;# talkBar& # 39;),告诉(); ,} ,else { ,警报(result.Error); ,} ,} ,& lt;/script>怎么在。net核心中使用FastHttpApi构建一个网站聊天室