SignalR

2 篇文章 0 订阅

SignalR

ASP.NET SignalR 是 ASP.NET 开发人员的库,可简化将实时 web 功能添加到应用程序的过程。 实时 web 功能使服务器代码能够在可用时立即将内容推送到连接的客户端,而不是让服务器等待客户端请求新的数据。
建立MVC项目
1.使用NuGet安装SignalR
在这里插入图片描述
2.建一个文件夹,在里面创建一个集线器类 和 OWIN Startup在这里插入图片描述
集线器类中写:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;

namespace WebApplication1.SignalR
{
    [HubName("MyHub")]//前端用和这个名
    public class MyHub : Hub
    {
        public void sendAll(string message)
        {
            //处理服务端完成后调用客户端的方法
            Clients.All.showMessage("php");
        }
    }
}

在这里插入图片描述
OWIN中写:

using System;
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(WebApplication1.SignalR.Startup))]

namespace WebApplication1.SignalR
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();
            // 有关如何配置应用程序的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkID=316888
        }
    }
}

HTML中:

<script src="~/Content/JS/jquery-1.12.2.min.js"></script>
<script src="~/Scripts/jquery.signalR-2.1.2.js"></script>//NuGet安装Signal后会自动放到文件夹中
<script src="~/signalr/hubs"></script>
<script>
    $(function () {
        var chat = $.connection.MyHub;
        //当连接建立完成对时候执行的方法
        $.connection.hub.start().done(function () {
            //chat.server.userConnected($(".user").text());
        });
        //前台触发,先调用服务器方法,服务器会回调客户端方法
        $(".btn").click(function () {
            chat.server.sendAll("fdsfds");
        });
        //创建一个客户端方法,可以让hub类调用这个方法
        chat.client.showMessage = function (message) {
        //message为推送过来的数据。
        }
 </script>

//上面需要前台触发,类似聊天需要有人点击发送,后台有了新数据往前端推送。
//下面的不用前台触发 前台只需对应showMessage方法


```csharp
public static void onReceive(List<string> alarms, List<string> DevState, List<string> Prevent, List<string> ZoneState)
        {
            string AlarmStr = string.Join("|", alarms.ToArray());//报警
            string DevStateStr = string.Join("|", DevState.ToArray());//设备状态
            string PreventStr = string.Join("|", Prevent.ToArray());//防区撤布防
            string ZoneStateStr = string.Join("|", ZoneState.ToArray());//防区实时状态

           

            //我正在使用SignalR向我的所有客户广播消息。我需要在集线器类之外触发广播
            var context = Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager.GetHubContext<SignalR.MyHub>();
            context.Clients.All.showMessage(AlarmStr + "☆" + DevStateStr + "☆" + PreventStr + "☆" + ZoneStateStr);
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SignalR是一个开源的实时通信框架,它可以在客户端和服务器之间建立双向通信的连接。而SignalR WebSocket是SignalR框架中的一种传输方式,它基于WebSocket协议,提供了更高效、更实时的双向通信能力。 使用SignalR WebSocket可以实现以下功能: 1. 实时更新:服务器可以主动向客户端推送数据,实现实时更新的功能。 2. 即时聊天:多个客户端之间可以实时进行双向通信,实现即时聊天的功能。 3. 实时监控:服务器可以实时向客户端发送监控数据,客户端可以实时展示监控信息。 4. 实时通知:服务器可以向客户端发送通知,客户端可以及时收到并进行相应处理。 SignalR WebSocket的工作原理如下: 1. 客户端通过WebSocket协议与服务器建立连接。 2. 服务器通过SignalR框架接收和处理客户端的请求。 3. 服务器可以主动向客户端推送数据,也可以响应客户端的请求。 4. 客户端通过SignalR框架接收和处理服务器的响应或推送数据。 SignalR WebSocket具有以下特点: 1. 跨平台:SignalR WebSocket可以在多种平台上使用,包括.NET、Java、JavaScript等。 2. 自动重连:当连接断开时,SignalR WebSocket会自动尝试重新建立连接。 3. 可靠性:SignalR WebSocket具有自动重连和错误处理机制,可以保证通信的可靠性。 4. 扩展性:SignalR WebSocket可以与其他技术和框架结合使用,实现更复杂的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值