.net 服务器推送信息,asp.net mvc实现简单的实时消息推送

2023-05-16

因为项目需要,需要在网页上实现消息的推送。在百度上搜索了一下,发现实现网页上的消息推送,可以使用asp.net 中的SignalR类库,当然也可以使用H5的WebSocket  Ajax的轮回。当然此处我们使用asp.net 中的SignalR类库。因为它可以实现网页上消息的实时推送。什么是实时推送呢,我简单的说一下我个人的理解吧。实时:在同一时间类发生的事情,当然在计算机中并不是绝对的实时,因为CPU在同一时间片只能处理一个任务,那么这个时候疑问又来了?

我们平时使用电脑又上网,又听音乐是如何实现的呢,因为现在的CPU的计算速度很快。CPU会把处理不同的任务的时间片,CPU会把时间片划到很小,很小,小到我们人类感知不到。比如在现在这个时间片上,CPU正在处理音乐任务,在下一个时间片的时候,CPU又在处理上网任务。所以我认为在计算机并没有绝对的实时,只是我们人类感知不到罢了。

推送:在此处的推送是指在网页消息推送。例如:用户A和B分别在各自的电脑打开打开一个相同的消息推送网页。假设用户A现在向用户B发送消息。就要经历一个这样的过程 用户A->Server->用户B。当然具体的底层实现过程,我就不在些探讨了哈。因为这个不是现在所要探讨的主题。因为Server有地址一般是固定不变的。所以客户端向服务器发送消息比较容易,因为目的地址固定。那服务器如何向客户端发送消息呢,这个就有点难道了因为客户端的地址不固定的,并且http是无状态的是不能记住用户的地址的。

所以为了解决这一个问题,计算机的先辈们用到了几个方法:

1、客户端"心跳"。每隔一段时间去访问服务器,看看服务器有没有任务给其客户端。Ajax的轮回就是使用的这个方法。缺点就是实时性不太高。

2、服务端和客户端的长连接,本文所要谈到的SignalR就是用的这种思想。缺点:服务器的压力大。

好了,现在就说一下什么是SignalR吧。SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程。实时 Web 功能是指这样一种功能:当所连接的客户端变得可用时服务器代码可以立即向其推送内容,而不是让服务器等待客户端请求新的数据。这个也就实现消息的实时推送。我个人理解的实现原理是首先由服务器定制一个函数用于一个客户端调用将消息发送给另一个客户端。当然客户端也需要定抽一个函数。因为服务器需要调用客户端的这个函数。

下面就说下具体的操作方法吧。

1、环境:win 10+VS2015 社区版

我使用asp.net mvc。首先打开VS 2015|文件|新建|项目(SignalRMvc)|asp.net Web应用程序|空模板,MVC,平台大概就是这样了。

现在说下具体需要包含的文件吧。

1)、SignalR集线器类。用于写一个访求调用客户段的函数。

2)、OWIN类。用于注册服务器的函数。

3)、前台的页面(包括前台的消息框的编写,函数的编写)当然前台需要一些文件。

一般VS没有自带SignalR类,需要我们在开始任务之前去添加这个功能。选择VS的工具|Nuget包管理器|Nuget包管理器控制台|Install-Package Microsoft.Aspnet.SignalR去安装SignalR。安装完成后,1、我们在改项目中新建一个文件夹为ChatHubs|新建一个SignalR集线器类,并写上如下代码:

?

2、在ChatHubs文件夹下新建一个OWIN类。并写上如下代码:

?

3、在Controllers新建一个Home控制器。并写上如下代码:

?

4、在控制器的方法上右击添加视图(不使用模板,也不使用布局页)后。并写上如下代码:

?

如果直接复制使用。要注意前台的代码引入的文件的目录及版本。前台代码的命名的首字母最好使用小写,后台代码的首字母最好使用大写。因为js默认使用的是驼峰命名法,C Sharp使用帕斯卡命名方式。如果没有注重这个细节就会很容易出错。因为后台代码在执行的时候会动态的生成一些JS代码,JS代码的默认使用的驼峰命名法。如果你在前台的代码用了帕斯卡命名方式就很容易出错了。并且还不好找。我是有过亲身经历的。

下面我们在本地测试下:分别使用FireFox和Chrome来模拟两个客户端,当然自身的电脑也就服务端。效果图如下:

1-200312121T2260.jpg

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.net 服务器推送信息,asp.net mvc实现简单的实时消息推送 的相关文章

随机推荐

  • java -jar 运行springboot项目时内存设置

    java Xms64m JVM启动时的初始堆大小 Xmx128m 最大堆大小 Xmn64m 年轻代的大小 xff0c 其余的空间是老年代 XX MaxMetaspaceSize 61 128m XX CompressedClassSpace
  • Jupyter notebook 读取文件的问题

    Jupyter notebook只能打开当前目录下的数据集 xff08 txt CSV等 xff09 xff0c 所以需要把数据集倒导入到当前目录下 xff0c 导入的方法是 1 文件不大时 直接上传文件 pd read csv读取 2 文
  • MIUI目前为止最简单安装谷歌服务框架教程

    安装谷歌服务框架方法有很多 xff0c 比如用第三方 rec卡刷gapps包 用第三方工具安装 然而这些对于新手来说还是比较难的 xff01 我今天说的方法可以说是最简单的 xff1a 1 不需要修改文件 xff1b 2 不需要借助第三方软
  • ubuntu 下通过ftp命令下载文件

    连接 ftp 192 168 180 2 Connected to 192 168 180 2 Name 192 168 180 2 rivsidn admin Password 获取远端文件 ftp gt get test pdf loc
  • MFC与.NET混合编程

    1 xff1a VS2008 建立 MFC程序 xff1b 2 xff1a Alt 43 F7 设置 xff1a 公共语言运行库支持 xff08 选择 xff09 公共语言运行库支持 clr xff1b 3 xff1a 添加 Net相应库
  • pycharm安装到32位操作系统

    在32位操作系统中安装pycharm过程中发现的一些问题 首先是下载了最新版本的pycharm安装后打开 xff0c 弹出未发现可执行的文件 xff0c 然后想到了其他的办法 1 下载最新版本的pycharm不能直接运行 xff0c 因此可
  • Mybatis入门---一对多、多对多

    前几天自己配置了Mybatis的高级查询 xff1a 一对多和多对多 xff0c 现在记录一下 xff0c 方便以后用到的时候再回顾 xff0c 下面是具体的操作步骤 一 首先就是配置Mybatis的xml文件及mapper的xml文件 x
  • python提交带中文post请求_Python批量发送post请求的实现代码

    Python批量发送post请求的实现代码 来源 xff1a 中文源码网 浏览 xff1a 次 日期 xff1a 2018年9月2日 下载文档 Python批量发送post请求的实现代码 txt 友情提示 右键点上行txt文档名 gt 目标
  • android butterknife 自定义view,android框架之ButterKnife注解式框架

    ButterKnife注解式框架简介 所谓注解式顾名思义就是利用注解的方式将代码抽象化 xff0c 每次使用只需要传递key和value值就行了 xff0c ButterKnife框架将View定义和点击事件很好的进行了注解式抽象 xff0
  • mac远程连接linux 服务器桌面by VNC

    为了远程使用Linux服务器 xff0c 折腾了一个下午 最终看来还是用vnc最简单了 实验室有两台强劲的Linux服务器用来做研究 之前我一直都是用ssh登到服务器上去码代码 xff0c 反应速度很快 xff0c 感觉很不错 但是因为在做
  • OpenSSL.Net使用随记

    最近在工作中遇到需要对数据传输进行加密解密 xff0c 一开始是 Net与 Net环境间进行交互 xff0c 使用 Net下的 System Security Cryptography 完全没有问题 xff0c 但后来要与Java xff0
  • ftp上传文件权限问题

    一 问题描述 ftp与普通用户 xff1a 1 程序运行用户prouser xff0c 用户组也为prouser 2 ftp服务用户ftpuser xff0c 用户目录 home ftpuser prouser对ftp目录权限要求 xff1
  • cannot import name ' is_list_like' from 'panda.core.common'

    https blog csdn net luqiwei 1981 article details 80891009 from pandas api types import is list like from pandas core com
  • wcdma系统随机接入过程的流程图_随机接入过程

    随机接入过程 编辑 锁定 随机接入是LTE系统中一个基本且重要的过程 xff0c 其主要目的如下 xff1a 建立上行链路同步 xff1b 建立一个唯一终端标识C RNTI xff0c 请求网络分配给终端上行链路资源 所以随机接入不仅用于初
  • 连接时出现:Can't open display: localhost:10.0

    解决方法 xff1a 在 etc hosts 中加入 127 0 0 1 localhost ipaddress hostname 之后能进入图形界面 注意是实际ip和机器名
  • ab变频器控制端子详解_变频器端子启停与通信设定频率详解(附程序)

    PLC控制变频器时经常碰到需要频繁修改频率 xff0c 只能选择用PLC通信来给定频率 xff0c 在通过数字输出Q点来控制变频器启停正反转 xff0c 从而实现PLC自动控制 在此我们以CPU ST30和V20变频器为例来讲解 硬件连接如
  • mysql8并行查询_并行查询(Parallel Query)

    通过Hint来控制并行查询 使用Hint语法可以对单个语句进行控制 xff0c 例如系统默认关闭并行查询情况下 xff0c 但需要对某个高频的慢SQL查询进行加速 xff0c 此时就可以使用Hint对特定SQL进行加速 您可以使用如下任意一
  • 傅里叶级数用matlab,傅里叶级数展开matlab实现

    傅里叶级数展开matlab 实现给个例子说明下 xff1a 将函数 y 61 x x pi x 2 pi xff0c 在 0 2 pi 的范围内傅里叶级数展开syms x fx 61 x x pi x 2 pi an bn f 61 fse
  • 计算机报名照片没有重命名,电脑照片重命名怎么弄

    大家好 xff0c 我是时间财富网智能客服时间君 xff0c 上述问题将由我为大家进行解答 电脑照片重命名的操作步骤是 xff1a 1 在电脑上找到并右击需要重命名的照片 xff0c 选择 重命名 选项 2 输入新的名字后按回车键即可 电脑
  • .net 服务器推送信息,asp.net mvc实现简单的实时消息推送

    因为项目需要 xff0c 需要在网页上实现消息的推送 在百度上搜索了一下 xff0c 发现实现网页上的消息推送 xff0c 可以使用asp net 中的SignalR类库 xff0c 当然也可以使用H5的WebSocket Ajax的轮回