.Net Core SignalR 实时推送信息
以前一直没用成功过SignalR(.net asp),最近几天又参考了对应的文档,最终调成功啦。
开始之前,应该注意:
一定要.Net Core 2.1.0以上的SDK。
VS2017 15.6以上的开发工具。
SignalR.js(该js文件可以通过npm下载。指令:npm install @aspnet/signalr)。
一.通过nuget包下载SignalR相关的第三方库(Microsoft.AspNetCore.SignalR),然后建好.Net Core web mvc项目,
在该项目中建个ChatHub.cs类,继承Hub类。
二.在Views目录下建个SignalR视图文件夹,在该文件夹内建Index.cshtml页面。
页面内容如下:
@page
<style>
th, td {
padding: 3px;
}
</style>
<div class="row">
<p></p>
<div class="col-md-12">
<form action="#">
<table>
<tr>
<td>Name</td>
<td colspan="2">
<input type="text" id="user" />
</td>
</tr>
<tr>
<td>Message</td>
<td colspan="2">
<input type="text" id="message" />
</td>
<td>
<input type="submit" id="send" value="Send" />
</td>
</tr>
</table>
</form>
<p></p>
<ul id="messages" style="list-style-type:none;"></ul>
</div>
</div>
<script src="~/lib/signalr.js"></script>
<script src="~/js/chat.js"></script>
<script src="~/js/jquery.min.js"></script>
三.把下好的signalr.js文件放到lib目录下,然后再js目录下建个Chat.js文件。
Chat.js文件内容如下:
//最新的用这个:const connection = new signalR.HubConnectionBuilder().withUrl("/chathub").build();
const connection = new signalR.HubConnection('/chathub');
//绑定接收方法
connection.on('RecieveMsg', (timestamp, user, message) => {
const encodedUser = user;
const encodedMsg = message;
const listItem = document.createElement('li');
listItem.innerHTML = timestamp + ' <b>' + encodedUser + '</b>: ' + encodedMsg;
document.getElementById('messages').appendChild(listItem);
});
document.getElementById('send').addEventListener('click', event => {
const msg = document.getElementById('message').value;
const usr = document.getElementById('user').value;
//委托后台Hub类中的SendMsg方法发送消息给前台的接收(RecieveMsg)方法。
connection.invoke('SendMsg', usr, msg).catch(err => showErr(err));
event.preventDefault();
});
//异常情况显示的内容。
function showErr(msg) {
const listItem = document.createElement('li');
listItem.setAttribute("style", "color: red");
listItem.innerText = msg.toString();
document.getElementById('messages').appendChild(listItem);
}
//开启连接
connection.start().catch(err => showErr(err));
//以上注释都是个人理解,有误请指出。
四:建个SignalR控制器。
SignalR控制器内容如下:
using Microsoft.AspNetCore.Mvc; namespace WebEFCodeFirst.Controllers
{
public class SignalRController : Controller
{
public IActionResult Index()
{
return View();
}
}
}
五.在StartUp类中注册SignalR相关信息。


最后运行程序,运行后的效果图:

项目结构图:

.Net Core SignalR 实时推送信息的更多相关文章
- HTML5 WebSocket 实时推送信息测试demo
测试一下HTML5的websocket功能,实现了客户端→服务器实时推送信息到客户端,包括推送图片: websocket实现MessageInbound类 onTextMessage()/onBina ...
- SignalR实时推送
SignalR 的实现机制与 .NET WCF 或 Remoting 是相似的,都是使用远程代理来实现.在具体使用上,有两种不同目的的接口:PersistentConnection 和 Hubs,其中 ...
- SignalR 实时推送消息
业务场景 以前做过一个东西,就是当数据库有数据更新的时候,能够自动更新到前台,那时候signalr还没出现的时候,需要自己实现轮询读库,对于数据库和程序都是比较郁闷的事情.现在利用SignalR解决数 ...
- Python接入企业微信 - 推送信息到内部群里
前言 之前一篇文章提到了使用wechatpy库来实现企业微信应用登录:Django + Taro 前后端分离项目实现企业微信登录 其实这个库可以实现的功能非常多,基本微信开发涉及到的功能都能实现. 本 ...
- 使用SignalR ASP.NET Core来简单实现一个后台实时推送数据给Echarts展示图表的功能
什么是 SignalR ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功能添加到应用程序的功能. 实时 web 功能使服务器端代码可以立 ...
- Asp.NET MVC 使用 SignalR 实现推送功能二(Hubs 在线聊天室 获取保存用户信息)
简单介绍 关于SignalR的简单实用 请参考 Asp.NET MVC 使用 SignalR 实现推送功能一(Hubs 在线聊天室) 在上一篇中,我们只是介绍了简单的消息推送,今天我们来修改一下,实现 ...
- java 使用 comet4j 主动向客户端推送信息 简单例子
[背景] 今天,一个前端的师弟问我怎样做实时聊天窗口,我毫不犹豫地说:在前台定时访问服务端呀!师弟默默地百度了一番,最后告诉我,有一种技术是后服务端动推送信息给客户端的,这种技术的名字叫comet,我 ...
- MVC 中使用 SignalR 实现推送功能
MVC 中使用 SignalR 实现推送功能 一,简介 Signal 是微软支持的一个运行在 Dot NET 平台上的 html websocket 框架.它出现的主要目的是实现服务器主动推送(Pus ...
- WinForm中 Asp.Net Signalr消息推送测试实例
p{ text-align:center; } blockquote > p > span{ text-align:center; font-size: 18px; color: #ff0 ...
随机推荐
- data数据不一致的问题
经常会遇到that.data能打印出来(能访问到),而that.data.xxx不能打印(为空)的情况.特别是在调用了云方法,然后setData的时候,为什么会出现这样的情况不明. 解决方法,将需要用 ...
- MPTCP iperf 发包方式
之前用的发包方式是发送大文件,用NC监测. 今天改了另外一种发包方式iperf,简单记录下. iperf发包,具体方法: 1.在终端中运行拓扑脚本: 运行py脚本:sudo python topy.p ...
- 性能测试-并发和QPS
性能测试-并发和QPS 响应时间: cpu计算耗时 + cpu等待耗时 + 网络io耗时 + 磁盘io耗时 并发: 服务端并发和客户端并发不是同一个概念.客户端并发仅仅是为了模拟多用户访问,服务端并发 ...
- 图之单源Dijkstra算法、带负权值最短路径算法
1.图类基本组成 存储在邻接表中的基本项 /** * Represents an edge in the graph * */ class Edge implements Comparable< ...
- 关于better-scroll中的问题点
最近在学习vue和better-scroll结合开发音乐APP,看着视频介绍中在制作slidet轮播图的时候,视频中讲解要想实现无缝滚动,则加入snapLoot:true,但是不可以单独引入它,必须将 ...
- Linux设备驱动框架设计
引子 Linux操作系统的一大优势就是支持数以万计的芯片设备,大大小小的芯片厂商工程师都在积极地向Linux kernel提交设备驱动代码.能让这个目标得以实现,这背后隐藏着一个看不见的技术优势:Li ...
- Online Judge(OJ)搭建——4、具体实现
代码编译.运行.保存: 本系统目前支持 Java.C++ 的编译.如有其他语言需要编译,扩展也很简单,因为这里使用了一个抽象类LanguageTest,处理好代码运行编译之前的文件保存,代码运行之中的 ...
- Java设计模式(二)抽象工厂模式
一.场景描述 接<Java设计模式(一)工厂模式>https://www.cnblogs.com/mahongbiao/p/8618970.html 工厂模式有一缺点,就是破坏了类的封闭性 ...
- C++实现Date日期类
定义一个Date类,包含三个属性年.月.日 实现了如下功能: 年月日的增加.减少:2017年10月1日加上100个月30天是2025年5月31日 输出某天是星期几:2017年10月1日是星期日 判断某 ...
- spy++捕获窗口消息
打开spy++,窗口截图如下,点击窗口搜索按钮(红框标识) ,如果找不到对应的窗口,鼠标右键刷新即可. 鼠标左键点击窗口搜索图标,按住不放,拖到需要抓取消息的窗口上: spy++会自动在列表中高亮定位 ...