使用FastHttpApi构建多人Web聊天室
为什么80%的码农都做不了架构师?>>>
一般在dotnet core
下构建使用web服务应用都使用asp.net core,但通过FastHttpApi
组建也可以方便地构建web服务应用,在FastHttpApi
功能的支持下构建多人聊天室是件非常简单的事情,通过组件并不需要了解WebSocket知识即可简单构建,以下讲解一下通过FastHttpApi如何构建一个简单的多人聊室。
创建项目
使用FastHttpApi构建一个WEB服务只需要创建一个普通ConsoleApp( 控制台应用)
创建项目后需要在Nuget
中添加引用FastHttpApi
只需要简单地引用Beetlex.FastHttpApi
即可构建基于Http
和Websocket
通讯应用。
创建逻辑
FastHttpApi对类和方法没有太多规则约束,只需要在类上定义一个Controller
标签即可,接下来实现一个简单的发送消息方法
[Controller]public class Controller{public bool Talk(string name, string messge, IHttpContext context){ActionResult result = new ActionResult();result.Data = new { name, messge };context.SendToWebSocket(result);return true;}}
以上代码定义一个Talk方法,方法把发信息的昵称和消息发送当前服务上下文中的所有websocket连接。直接下来的事情就是要在页面上调用它,大家知道在页面调用http或websocket 需要定义一些代码和指定相应的URL。但Beetlex.FastHttpApi
提供一个非常便利的方式,通过安装一个插件可以自动生成这些代码插件安装介绍(暂只支持vs2017).当插件安装完成后只需要设置类文件的自定义工具即可
插件会在当前类文下生成一个js
文件,文件里把调用方法的URL和参数都定义完成
var $Talk$url='/talk';
function $Talk(name,messge,useHttp)
{return api($Talk$url,{name:name,messge:messge},useHttp).sync();
}
function $Talk$async(name,messge,useHttp)
{return api($Talk$url,{name:name,messge:messge},useHttp);
}
这个文件非常简单,主要包括URL,同步方法和异步方法。这个js
文件需要依赖FastHttpApi.js
才能使用,所以在页面上必须把这个文件也引用上。接下来就是页面脚本的使用
<script>function onreceive(result) {$('<p><span class="label label-default">' + result.Data.name+'</span>:' + result.Data.messge + '</p>').appendTo('#lstTalk')}async function sendMessage() {var name = $('#name').val();var message = $('#msg').val();if (!name) {alert("enter name!");return;}if (!message) {alert('enter messgae');return;}var result = await $Talk(name, message);if (result.Code != 200) {alert(result.Error);}else$('#msg').val('');}$(document).ready(function () {api_receive(onreceive);//绑定消息接收事件});</script>
引用脚本后,直接通过方法调用即可,这种明确的方法调用比传统的jquery.post
有着调用的明确性和便利性,让使用者不需要查看接口文档即可以知道方法的调用参数。如果控制器定了XML帮助注释,插件同样也会把注释生成到脚本中。
静态文件存储
组件通过固定的目录来存放静太资源,因此项目需要创建一个views
目录来存储静态资源,views
目录是web服务的根目录。
由于静态文件默认情况是不会被编译处理,所以我们需要把文件设置成编译嵌入模式或复制到输出目录中。如果是复制到输出目录下,可以在项目生成事件中添加一段复制代码。
启动服务
组件启动服务很简单,不过在启动前需要注册一下程序集,把控制器注册到HTTP服务中。
static void Main(string[] args){mApiServer = new BeetleX.FastHttpApi.HttpApiServer();mApiServer.Debug();//只有在Debug模式下生产,把静态资源加载目录指向项目的views目录mApiServer.Register(typeof(Program).Assembly);//加载程序集中所有控制器信息和静态资源信息mApiServer.Open();Console.Write(mApiServer.BaseServer);Console.Read();}
组件默认是不需要配置即可启动HTTP服务,默认端口是9090
.不过这些信息也是可以通过配置文件加载,只要程序目录存在HttpConfig.json
文件组件即会加载配置文件中的配置信息来运行服务。配置文件详解
这样一个简单多人web聊天室就完成,运行效果如下:
详细代码
转载于:https://my.oschina.net/ikende/blog/2249071
使用FastHttpApi构建多人Web聊天室相关推荐
- 使用nodejs搭建你自己的专属web聊天室
前言 前断时间在学习nodejs,自己闲来无事,在网上搜索了一些资料自己搭建了一个属于自己的web聊天室项目.现在把自己的开发过程和心得和大家分享,希望其中涉及到的一些知识对你有用. 项目开源地址:h ...
- 基于阿里云用C/C++做了一个http协议与TCP协议的web聊天室的服务器——《干饭聊天室》
基于阿里云用C/C++做了一个http协议与TCP协议的web聊天室的服务器--<干饭聊天室> 在这里首先感谢前端小伙伴飞鸟 前端技术请看一款基于React.C++,使用TCP/HTTP协 ...
- rudesocket如何使用_[WebSocket入门]手把手搭建WebSocket多人在线聊天室(SpringBoot+WebS...
前言 本文中搭建了一个简易的多人聊天室,使用了WebSocket的基础特性. 源代码来自老外的一篇好文: 本文内容摘要: 初步理解WebSocket的前后端交互逻辑 手把手使用 SpringBoot ...
- Django项目--web聊天室
需求 做一个web聊天室,主要练习前端ajax与后台的交互: 一对一聊天和群组聊天 添加用户为好友 搜索并添加群组 管理员可以审批用户加群请求,群管理员可以有多个,群管理员可以删除,添加禁言群友 与聊 ...
- ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(一) 之 基层数据搭建,让数据活起来(数据获取)...
大家好,本篇是接上一篇 ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(零) 前言 ASP.NET SignalR WebIM系列第二篇.本篇会带领大家将 LayIM ...
- LayIM 3.9.1与ASP.NET SignalR实现Web聊天室快速入门(五)之使用RabbitMQ缓存消息
前言 本系列文章特点:使用ASP.NET SignalR和LayIM快速入门对接,实现一对一聊天,群聊,添加聊天群组,查找聊天记录等功能.源代码不包含LayIM的源代码,因为官方并没开源属于收费资源, ...
- Spring和WebSocket整合并建立简单的Web聊天室
Spring和WebSocket整合并建立简单的Web聊天室 官方主页 Spring WebSocket 一.概述 WebSocket 是一种网络通信协议.RFC6455 定义了它的通信标准. Web ...
- 视频教程-多人网络聊天室-Unity3D
多人网络聊天室 广州市码锋网络有限责任公司创始人,从事游戏开发九年,熟练前后端的各种技术,我很乐意将企业中商用的技术分享给你,帮助你解决工作的各种问题. 官剑铭 ¥39.00 立即订阅 扫码下载「CS ...
- 【项目设计】基于WebSocket的Web聊天室
文章目录 1. 项目简介 2. 数据库表的设计 3. 实体类以及工具类的设计 3.1 实体类model 3.1.1 lombok的使用 3.2 工具类util 3.2.1 DBUtil 3.2.2 W ...
最新文章
- 上一篇的js处理失真数据存在问题换了种方法
- 深度学习100问-1:深度学习环境配置有哪些坑?
- mysql5.7版本源_用最新MySQL 8.0的源安裝MySQL 5.7版本(CentOS 7環境下)
- 云计算 java go c_面向对象编程的面向过程表示:c java go
- ABAP memory中的Export和Import
- J2EE dynamic web工程搭建 struts2
- label居中_表格固定列宽时如何居中?
- xamarin android 设备,【Xamarin.Android】在Visual Studio中增强设备日志记录
- 数据库实验一——数据库定义与操作语言实验
- b类 蚂蚁金服_终于拿到蚂蚁金服Offer!!!分享一下全程面试题和面试经验!...
- 西门子梯形图转换C语言,梯形图和指令表相互转换
- 触宝发布2018年第四季度财报 净收入增长147%
- javascript eval 函数作用
- 转载--给函数取个好名
- Ubuntu报错的情况及解决方法记录
- Visio2019安装教程(与正版office同时使用)
- 从SSD角度学习NAND Flash(一)
- 【机器学习实战】KNN
- Rust - Rocket框架 -基础入门
- 5秒钟用google earth engine(GEE)填补Landsat7条带问题
热门文章
- flac3d命令流实例大全_ANSYS APDL 疲劳分析实例附命令流
- python2安装pyyaml_Python3安装Pyyaml
- window环境编译在linux环境运行的golang程序
- python连接plc实例_Python连接数据库MySQL与操作示例
- cc2530期末试卷_无线传感网期末考试 zigbee期末考试试题
- 11 Python Pandas tricks that make your work more efficient
- L1标准化与L2标准化
- jmetter持续时间_Jmeter常用线程组设置及场景运行时间计算
- mysql用户数据导入_MySQL添加用户、删除用户与授权和数据的导入导出
- 笔记-中项案例题-2018年上-人力资源管理