手机版

net core使用FastHttpApi构建网络聊天室实例代码

时间:2021-08-29 来源:互联网 编辑:宝哥软件园 浏览:

前言

一般使用ASP.NET核心在dotnet core下构建web服务应用,但是通过FastHttpApi构建web服务应用也很方便。在FastHttpApi功能的支持下,搭建多人聊天室非常简单。它可以简单地通过组件构建,而不需要知道WebSocket的知识。下面介绍如何通过FastHttpApi搭建一个简单的多人聊天室。

创建项目

要使用FastHttpApi构建一个WEB服务,您只需要创建一个普通的ConsoleApp。

创建项目后,您需要在Nuget中添加一个引用FastHttpApi

基于Http和Websocket的通信应用,只需参考Beetlex.FastHttpApi即可构建。

创建逻辑

FastHttpApi对类和方法没有太多的规则和约束,只需在类上定义一个Controller标签,然后实现一个简单的网络聊天室

[controller]public class controller {//用户登录到public bool login(字符串昵称,ihttpcontextcontext){ context . session . name=昵称;ActionResult结果=new action result();结果。Data=new { name=nickName,message='login ',type='login ',time=DateTime。now . ToString(' T ')};语境。SendToWebSocket(结果);返回真;}//内联获取联机用户公共对象列表(ihttpcontextcontext){从r in context . server . getweb sockets()返回,其中r.session.name!=null选择新的{ r.Session.Name,IP=r . session . remote endpoint . tostring()};}//发送聊天消息public bool talk(字符串昵称,字符串消息,ihttpcontextcontext){ action result=new action result();结果。数据=新{名称=昵称,消息,类型='通话',时间=DateTime。now . ToString(' T ')};语境。SendToWebSocket(结果);返回真;}}以上代码分别定义了登录、在线用户获取和alk方法,方法的定义也不受约束。这些参数是根据他们自己对IHttpContext的需求来定义的。如果不需要它们,就不需要在方法中定义它们。接下来就是在页面上调用它。众所周知,在页面上调用http或websocket需要定义一些代码并指定相应的URL。然而,比泰莱克斯。FastHttpApi提供了一种非常方便的方法,通过安装插件自动生成这些代码插件安装介绍(目前只支持vs2017)。插件安装完成后,只需要设置类文件的自定义工具。

该插件将在当前类文本下生成一个js文件,其中定义了调用方法的URL和参数

var $ log in $ URL='/log in ';函数$Login(昵称,useHttp){返回api($Login$url,{昵称:nickName},useHttp)。sync();}函数$Login$async(昵称,useHttp){ return api($Login$url,{昵称:nickName},useHttp);} var $ listonline $ URL='/listonline ';函数$ ListOnlines(useHttp){ return API($ ListOnlines $ URL,{},UseHttp)。sync();}函数$ ListOnlines $ async(UseHttp){ return API($ ListOnlines $ URL,{},UseHttp);} var $ Talk $ URL='/Talk ';函数$Talk(昵称,消息,useHttp){返回api($Talk$url,{昵称:nickName,消息:message},useHttp)。sync();}函数$Talk$async(昵称,消息,useHttp){ return api($Talk$url,{昵称:nickName,消息:message},useHttp);}这个文件很简单,主要包括URL、同步方法和异步方法。这个js文件需要依赖FastHttpApi.js才能使用,所以这个文件也必须在页面上引用。下一步是使用页面脚本

脚本函数接收(结果){ if(结果。Data.type=='login' ||结果。data . type==' quit '){ $ ListOnlines $ async()。execute(function(result){ listsusercontrol。数据=结果。数据;});} messages.push(结果。数据);var objDiv=document . getelementbyid(' lstatk ');objdiv . scroll top=objdiv . scroll height;} async函数send message(){ var msg=$(' # talkMsg ')。val();if(!msg) { alert('输入消息');返回;} var result=await $ Talk(昵称,msg);if(结果。代码!=200)警报(结果。错误);else $('#talkMsg ')。val(“”);} async函数login() {昵称=$('#userName ')。val();if(!昵称){ alert('输入您的姓名!')返回;} var result=await $ Login(昵称);if(结果。代码==200) { $('#loginBar ')。hide();$('#talkBar ')。show();} else { alert(结果。错误);}} /script引用脚本,然后可以直接由方法调用。与传统的jquery.post相比,这种显式的方法调用更加显式和方便,用户不用看接口文档就可以知道方法的调用参数。如果控制器指定了XML帮助注释,插件也会在脚本中生成注释。

静态文件存储

组件通过一个固定的目录存储静态资源,因此项目需要创建一个视图目录来存储静态资源,这是web服务的根目录。

因为默认情况下不会编译静态文件,所以我们需要将文件设置为编译和嵌入模式,或者将它们复制到输出目录中。如果它被复制到输出目录,您可以向项目生成事件添加一个复制代码。

开始服务

组件启动服务非常简单,但是在启动之前,您需要注册程序集并在HTTP服务中注册控制器。

static void Main(string[]args){ mApiServer=new BeetleX。fashttppapi . httppapserver();mApiServer。debug();//仅在调试模式下,将静态资源加载目录指向views目录mapiserver.register(类型为(program))。装配);//在程序集mApiServer中加载所有控制器信息和静态资源信息。open();控制台。Write(mApiServer。baseSERVER);控制台。read();}默认情况下,组件无需配置即可启动HTTP服务,默认端口为9090。但是,也可以通过配置文件加载这些信息。只要程序目录中存在HttpConfig.json文件组件,它就会加载配置文件中的配置信息来运行服务。

服务配置文件

组件提供HttpConfig.json作为组件基本服务项设置。这个文件不是必需的。只要该文件存在于目录中,组件就会在初始化服务时加载该文件的信息作为设置信息。以下是此配置文件中配置项目的一般说明。

{'HttpConfig': {'Host': ' ',' Port': 9090,' SSL': false,' CertificateFile ' : ' ',' CertificatePassword': ' ',' MaxBodyLength': 2097152,' OutputStackTrace': false,' StaticResurceType ' : ' xmlsvgwoffwoff2jpgjpeggif巴布亚新几内亚;js;htmlhtmcsstxticoziprar ',' DefaultPage ' : ' index.htmlindex.htm ',' NotLoadFolder ' : ' \ \ Files\ \图像;\\Data ',' Manager': 'admin ',' ManagerPWD': '123456 ',' NoGzipFiles ' : ' jpgjpeg巴布亚新几内亚;gif巴布亚新几内亚;icoziprarbmp ',' CacheFiles ' : ' htmlhtmjs;css ',' BufferSize': 1024,' WebSocketMaxRPS': 1000,' WriteLog': true,' LogToConsole': true,' LogLevel': '战国',' FileManager ' : false } }主机

服务监听的Ip地址,暂时只支持任意一个IP

港口

服务侦听的端口

无论是否启用SSL,如果需要启用,必须指定证书和加载证书的密码;启动后可以使用Https访问服务

证书文件

证书文件

证书单词

证书密码

MaxBodyLength

默认情况下,Http正文的最大消息长度是2M

输出堆栈跟踪

服务出错时是否输出详细的错误代码信息

StaticResurceType

支持的静态资源类型,如果这里没有描述文件类型访问,它将返回403

默认页面

访问根路径,即要查找的默认文件

经理

后台管理员的用户名

ManagerPWD

后台管理员的密码

写日志

打开日志以写入文件

等级

输出日志级别主要包括以下几个级别:警告、无、信息、警告、错误

这样一个简单的多人网络聊天室就完成了,运行效果如下:

在线演示

详细代码

摘要

以上就是本文的全部内容。希望本文的内容对大家的学习或工作有一定的参考价值。有问题可以留言交流。谢谢你的支持。

版权声明:net core使用FastHttpApi构建网络聊天室实例代码是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。