SignalR简单Demo

简介:   我们实现一个简单的消息通知的Demo   在NuGet中添加SignalR引用install-package Microsoft.AspNet.SignalR 然后我们创建一个类来引用Hub类namespace SignalRDemo.

 

  我们实现一个简单的消息通知的Demo

   在NuGet中添加SignalR引用

install-package Microsoft.AspNet.SignalR

 然后我们创建一个类来引用Hub类

namespace SignalRDemo.Hubs
{
    public class ServerHub:Hub
    {
    }
}

 或者直接在添加项中添加SignalR添加SignalR

  然后我们在ServerHub类中创建一个发送信息方法

/// <summary>
/// 服务器发送方法
/// </summary>
/// <param name="msg"></param>
public void SendMsg(string msg)
{
       //调用客户端的showMsg方法
       Clients.All.showMsg(Context.ConnectionId, msg);
}

 

   这个方法由客户端进行调用,方法中Clients代表客户端对象,这段话表示调用客户端的showMsg方法.而All代表是给所有人发送通知

    All:调用所有人方法

    Others:调用除去自己所有人方法

  Caller:调用自己方法

  Group:调用组内所有人方法

  Client(string connectionId):调用指定连接编号的方法

     Context.ConnectionId是当前连接用户的标志,是一个GuId

    然后我们创建一个Start类来注册SignalR

namespace SignalRDemo
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();
       }
    }
}

 

   注意,此处是一个约定,类名与方法名必须为Startup和Configuration。该类还必须在网站根目录,否则运行时就会出错

    接下来我们就可以创建页面了

    创建一个Home控制器Index页面。

    在页面中引用JQuery类库与SignalR类库

然后我们再手动添加一个类库引用

 <script src="~/SignalR/Hubs"></script>

  这个js类库在目录下是找不到的,它是在运行时自动创建

  我们可以启动项目来查看下这个路径

  如果出现此页面则表示我们SignalR配置OK。

   下面我们就可以写客户端了

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div> 
         <input  type="text" id="msg"/>
        <button id="sendMsg">发送消息</button>
    </div>
    <ol id="showMsg">

    </ol>
    <script src="~/Scripts/jquery-1.6.4.js"></script>
    <script src="~/Scripts/jquery.signalR-2.2.2.js"></script>
    <script src="~/SignalR/Hubs"></script>
    <script>
        $(function () {
            //获取服务端连接对象
            var hub = $.connection.serverHub;
            //创建服务端所调用的客户端方法
            hub.client.showMsg=function(name, msg){
                $('#showMsg').append('<li><span style="color:red">'+name+':</span>'+msg+'</li>')
            }
            //开始连接服务器
            $.connection.hub.start().done(function () {
                //连接成功
                $('#sendMsg').bind('click', function () {
                    //调用服务端发送方法
                    hub.server.sendMsg($('#msg').val());
                })
            }).fail(function () {
                //连接失败
                alert("连接失败");
            });
        })
    </script>
</body>
</html>

   然后就可以简单进行消息通知了

 

   

相关文章
|
开发框架 .NET 开发工具
SignalR 2.x入门(一):SignalR简单例子
SignalR 2.x入门(一):SignalR简单例子
191 0
SignalR 2.x入门(一):SignalR简单例子
|
Web App开发 移动开发 开发者
Silverlight面向客户端,HTML5面向Web
Bob Muglia在PDC 2010讲到Silverlight的时候,说“我们的策略已经转移了”,事后,他又试图澄清这到底是什么意思。Steve Ballmer和Tim Heuer也对Silverlight发表评论,试图重新让社区确信微软对Silverlight的承诺,但是他们也指出这样的事实,HTML5是针对跨平台开发的解决方案,而Silverlight针对的是客户端和Windows Phone。
1105 0
|
JavaScript 前端开发 .NET
SignalR QuickStart
原文:SignalR QuickStart SignalR 是一个集成的客户端与服务器库,基于浏览器的客户端和基于 ASP.NET 的服务器组件可以借助它来进行双向多步对话。 换句话说,该对话可不受限制地进行单个无状态请求/响应数据交换;它将继续,直到明确关闭。
856 0
|
网络协议 监控 API
ESFramework Demo -- P2P通信Demo(附源码)
现在我们将在ESFramework Demo -- 文件传送Demo 的基础上,使用ESPlus提供的第四个武器,为其增加P2P通信的功能。在阅读本文之前,请务必先掌握ESFramework 开发手册(04) -- 可靠的P2P 一文中介绍的P2P的基础知识以及相关API的用法。
1144 0
|
JavaScript C#
SignalR的简单使用(二)
原文:SignalR的简单使用(二)   之前提到SignalR代理在网页,通过生成的Js来完成相关的功能。但我不禁想一个问题, 难到SignalR的服务端就能寄存在web端吗,通过访问网页能方式才能启动服务,还有客户端 也只能在web端吗?经过看官网的教程得到 了结论,两者的答案都是否定的。
1181 0
|
JavaScript 前端开发 .NET
SignalR
原址: http://www.cnblogs.com/shanyou/archive/2012/07/28/2613693.html SignalR是什么?     SignalR是一个继承的客户端与服务器库,基于浏览器的客户端和基于ASP.NET的服务器组件可以借助它来进行双向多步对话,换句话说,该对话可不受限制的进行单个无状态请求/响应数据交换;它将继续,直到明确关闭。
1129 0
|
前端开发 C#
SignalR---DOTNET客户端
原文:SignalR---DOTNET客户端 这里面有用到异步的相关知识,本人前几篇文章也简单的提到。 SignalR客户端要寄宿在.NET的客户端,必须安装Microsoft.AspNet.SignalR.Client。
1222 0
|
JavaScript 前端开发 中间件
SignalR--Web客户端
原文:SignalR--Web客户端 这里说web客户端其实是JavaScript起的作用,也可以说是JavaScript客户端。 官方的标题的JavaScript客户端。 下面的翻译,同样的代码的形式上传。
1269 0
|
JavaScript 前端开发 Go
SignalR---服务端
原文:SignalR---服务端 前段时间把SignalR的官网教程大致看了一下,算是翻译了一遍,加上了自己的个人理解, 一下上传三个文件,分别是服务端、web客户端、DOTNET客户端相关文档,供大家参考。
1379 0