手机版

信号器在ASP MVC中的简单应用 网

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

一.导言

ASP。NET signalr是一个面向ASP.NET开发者的库,可以简化向应用程序添加实时Web功能的过程。实时Web功能是指服务器代码可以在内容可用时立即将内容推送到连接的客户端,而不是让服务器等待客户端请求新数据的功能。——百度百科

首先,ASP。NET Signaler是ASP下的一个类库。NET,可以在ASP中实现实时通信。NET网络项目。让客户端(网页)和服务器互相通知消息并调用方法。

SignalR自动处理连接管理,这允许服务器同时向所有连接的客户端(如聊天室)广播消息。您还可以向特定的客户端发送消息。客户端和服务器之间的连接是持久的,这是为每次通信重新建立的,与传统的HTTP连接不同。

SignalR支持“服务器推送”功能,其中服务器代码可以使用远程过程调用(RPC)在浏览器中调用客户端代码,而不是现在网络上常见的请求响应模型。

总之,SignalR是一个运行在。NET平台,其主要目的是实现服务器主动向客户端页面推送消息。

注意:WebSocket要求服务器使用Windows Server 2012或Windows 8和。NET框架4.5。如果不满足这些要求,信号员将尝试使用其他传输方式进行连接。

二、安装

打开管理NuGet包,搜索SignalR,并安装以下包

安装完成后,程序中会有更多的引用

第三,写代码

因为使用了信号2,所以有必要创建一个新的Startup.cs类并配置集线器,如下所示

使用微软。Owin使用Owin[程序集: owinstartup(类型为(signal startup . startup))]命名空间signal startup { public class startup { public void configuration(IAPP构建器应用程序){//configure hub app。mapsignor();}}}然后编写服务器的hub类

使用系统;使用系统。集合。通用;使用系统。Linq使用系统。线程化。任务;使用系统。Web使用微软。信号员;命名空间signor { public class server hub : hub { public void send msg(字符串消息){//调用所有客户端的sendMessage方法(sendMessage有2个参数)clients。All.sendMessage(DateTime。now . ToString(' yyyy-MM-DD hh :MM 3360s '),消息);}}}创建HomoController及其动作函数索引

使用系统;使用系统。集合。通用;使用系统。Linq使用系统。Web使用系统。Web . Mvc命名空间信号。控制器{公共类HomeController :控制器{公共操作结果索引(){返回视图();}}}预索引代码

@{ ViewBag.title='SignaIR聊天窗口';} div class=' container ' input type=' text ' id=' message '/input type=' button ' id=' send message ' value=' biu biu '/ul id=' messageBox '/ul/div @ section Scripts { Script src=' http : ~/Scripts/jquery . signor-2 . 2 . min . js '/Script Script src=' http 3360 ~/signor/hubs '/Script $(function(){//指自动生成的hub代理var chat=$)//定义服务器调用的客户端sendMessage显示新消息chat . client . send message=function(name,message){//添加一个message $ ('# messagebox ')。追加(' listrongstyle=' color : green ' ' name '/strong : ' message '/Li ');}//将焦点设置到输入框$(“# message”)。焦点();//开始连接到服务器$。connection.hub.start()。done(function(){ $(' # sendmail '))。单击(function(){//调用发送方法chat . server . send msg($(' # message ')。服务器端集线器的val());//清空输入框信息,获取焦点$('#message ')。val(“”)。焦点();}) }) });/script }

运行效果,在任意窗口发送消息,其他所有客户端都能收到消息。

运行程序的时候,网页页面就与信号员的服务建立了连接,具体的建立连接的代码就是:$.connection.hub.start()。这句代码的作用就是与信号员服务建立连接,后面的完成的函数表明建立连接成功后为按钮注册了一个点击事件;也可以用集线器对象chat.connextion.start()

还记得这句吗?脚本src=' http : ~/signor/hubs '/脚本F12看到的结果

上面的演示中的客户全部.发送消息是调用所有客户端的发送消息函数,属于群发。

下面是一个客户端分组的演示

服务端代码

公共void AddToRoom(字符串groupName,字符串用户名){ //将连接添加到指定的组(团体为哈伯斯特中的接口属性)组。添加(上下文ConnectionId,组名);//根据组名称获取对应客户端的组,调用该组的添加用户方法客户。组(组名,新字符串[0])。添加用户名(组名,用户名);}公共作废发送(字符串groupName,字符串细节,字符串用户名){//客户端.All.addSomeMessage(详细信息);//群发给所有//调用客户端某一个组的添加一些消息客户端。组(组名,新字符串[0])。添加一些消息(组名、详细信息、用户名);}客户端代码

聊天。客户。add some message=function(GrouP id,detail,userName) { console.info('广播消息:' detail);$('#contentMsg ').追加(“李”用户名“:”详细信息“/李”);};聊天。客户。adduserin=function(GrouPid,userName) { $('#contentMsg ').追加(‘李’用户名'进入' groupId '号聊天室!/Li’);};$ .连接。集线器。日志记录=真;//启动信号员状态功能$.connection.hub.start().done(function() { //加入聊天室$('#joinRoom ').单击(function(){ var GroupID=$(' # GroupID ')).val();var userName=$('#userName ').val();chat.server.addToRoom(groupId,userName);});//发送消息$(“# send”).单击(函数(){ var detail=$(' # message ')).val();var groupId=$('#groupId ').val();var userName=$('#userName ').val();chat.server.send(组标识、详细信息、用户名);});});运行效果

从上面两张图可以看出,客户端实现了分组

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

版权声明:信号器在ASP MVC中的简单应用 网是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。