SingalR自托管(self-host)实例

实例说明:

Microsoft.AspNet.SignalR.SelfHost-------用于创建自托管服务器端

Microsoft.AspNet.SignalR.JS----------------用于创建Web浏览器客户端

Microsoft.AspNet.SignalR.Client------------用于创建.Net Client 例如控制台、Wpf等

//服务器端
Install-Package Microsoft.AspNet.SignalR.SelfHost
Install-Package Microsoft.Owin.Cors
//客户端
Install-Package Microsoft.AspNet.SignalR.Client
Install-Package Microsoft.AspNet.SignalR.JS

SignalR常常依托于ASP.NET应用程序运行于IIS中,但它还可以自我托管(比如作为console winform、Windows service).只要我们使用self-host库就可以了.

该库向所有的SignalR 2库一样,构建于OWIN (Open Web Interface for .NET).OWIN定义了一个在.NET web 服务端和web 应用程序的抽象.

OWIN解耦了从服务端来的web 应用程序,这使得OWIN对于子托管web应用程序于自己的进程中得以表现得很完美.

下载源代码:http://git.oschina.net/tiama3798/SingleR_Demo/tree/SelfHost/

一、创建服务器端,以控制台为例

1.新建控制台项目

2.添加引用类库,SignalR.SelfHost(宿主类库)和Owin.Cors(跨域控制)

Nuget命令:

Install-Package Microsoft.AspNet.SignalR.SelfHost
Install-Package Microsoft.Owin.Cors
3.创建服务器端实例代码:

添加OwinStart

[assembly: OwinStartup(typeof(SingnalROne.Startup1))]

namespace SingnalROne
{
    public class Startup1
    {
        public void Configuration(IAppBuilder app)
        {
            //跨域设置
            app.UseCors(CorsOptions.AllowAll);
            //路由注册(使用默认)
            app.MapSignalR();
        }
    }
}
自定义集线器

public class MsgHub : Hub
{
    /// <summary>
    /// 向所有客户端发送消息或转发消息
    /// </summary>
    /// <param name="content"></param>
    public void Send(string content)
    {
        Console.WriteLine("服务器中转内容:" + content);
        //通知所有客户端
        Clients.All.receive(content);
    }
}
Main方法中注册端口监听

class Program
{
    static void Main(string[] args)
    {
        //创建服务器监听
        string url = "http://localhost:8000";
        using (WebApp.Start(url))
        {
            Console.WriteLine("Server runing on {0}", url);
            Console.Read();
        }
    }
}
二、创建.net Client,控制台客户端

1.新建控制台项目

2.添加引用类库 SingalR.Client

Install-Package Microsoft.AspNet.SignalR.Client
3.mian方法中注册客户端连接并开启监听等待

class Program
{
    //SignalR.Client简单实例
    static void Main(string[] args)
    {
        //创建客户端连接
        string url = "http://localhost:8000";
        var con = new HubConnection(url);
        //实例化客户端代理
        IHubProxy msgProxy = con.CreateHubProxy("MsgHub");
        //注册客户端接收
        msgProxy.On("receive", (content) =>
        {
            Console.WriteLine("服务器推送内容:" + content);
        });
        //启动监听并等待
        con.Start().Wait();
        //客户端,发送内容
        msgProxy.Invoke("Send", "ConsonleClient,上线了");
        Console.WriteLine("ConsonleClient,启动成功");
        Console.Read();
    }
}
注:更多SingleR.Client配置请参考: http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-net-client

三、创建Web浏览器客户端

1.新建Web空项目

2.添加引用类库 SingalR.JS

Install-Package Microsoft.AspNet.SignalR.JS
3.创建msghub1.html页面实例

主要代码html

<input type="text" id="txtOne" />
<input type="button" id="btnOne" value="发送内容" />
<p id="result"></p>
<!--依赖文件-->
<script src="../Scripts/jquery-1.6.4.min.js"></script>
<script src="../Scripts/jquery.signalR-2.2.1.min.js"></script>
<!--加载hub客户端js代理 -->
<script src="http://localhost:8000/signalr/hubs"></script>
js代码:

//创建 MsgHub js实例
$.connection.hub.url = "http://localhost:8000/signalr";
var msgHub = $.connection.msgHub;
//启用客户端日志
$.connection.hub.logging = true;
//注册客户端接收事件处理
msgHub.client.receive = function (content) {
    console.info(content);
    $('#result').append('服务器推送内容:'+content).append('<br />');
}
//启动监听
$.connection.hub.start().done(function () {
    //调用服务端发送消息
    $('#btnOne').click(function () {
        var text = $('#txtOne').val();
        msgHub.server.send(text);
    });
});
运行结果:



更多自托管demo:http://www.asp.net/signalr/overview/deployment/tutorial-signalr-self-host


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值