此文章简单清楚的实现了由后端服务器推送消息给前端的实例,不足之处,欢迎探讨!
推送功能其实很简单, 跟着下面步骤走!
1. 必须在 .net4.5 环境下 (其他没试过,可以实现,但复杂)
2. 在工具选项中-NuGet程序包管理器-程序包管理器控制台-输入Install-Package Microsoft.AspNet.SignalR
3. 在程序中会自动生成script文件
4. 接下来添加HTML文件 里面有注释 自己看了哦 n_n
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script src="Scripts/jquery-1.6.4.min.js"></script>
<script src="Scripts/jquery.signalR-2.2.0.min.js"></script>
<!--手动加上自动生成引用-->
<script src="signalr/hubs"></script>
</head>
<body >
<div>
<input type="text" id="message" />
<input type="button" id="sendmessage" value="Send" /><br /><br />
<textarea id="messageBox" placeholder="此message 由后台推送" readonly cols="30" rows="5"></textarea>
</div>
<script type="text/javascript">
$(function () {
// 【1】声明代理引用
var con = $.connection.pushHub;
// 【2】创建方法可以调用广播消息的功能。
con.client.broadcastMessage = function ( message) {
$("#messageBox").val(message);
};
// 【3】开始连接
$.connection.hub.start().done(function () {
$('#sendmessage').click(function () {
// 【4】服务器的发送方法
con.server.send($('#message').val());
});
});
});
</script>
</body>
</html>
5.加个服务器推送类
using Microsoft.AspNet.SignalR;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Web;
namespace SignalRChat
{
public class PushHub : Hub
{
public void Send(string message)
{
Clients.All.broadcastMessage( message);
}
}
}
6.再加个初始化
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(SignalRChat.Startup))]
namespace SignalRChat
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
//任何连接或引用连线和配置都应该在这里
app.MapSignalR();
}
}
}
好了…就这么简单 可以测试用了 还可以扩展简单局域网聊天等
实在懒的话 我稍会给个demo 吧!
//声明全局变量
//public static IHubContext GetHubContext()
//{
//return GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
//}