Signalr:
用来客户端和服务器的消息调用.
1 导入我们的jq和signalr的js
1.1 在vs控制台下载我们的signalr
install-package Microsoft.AspNet.SignalR -version 2.0.3
2 建一个我们的类Startup的类
这个事我们一般笔记本就可以的
public class Startup
{
publicvoid Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
这个是我们学校的代码
using Microsoft.Owin;
using Owin;
[assembly:OwinStartupAttribute(typeof(Microsoft.AspNet.SignalR.StockTicker.Startup),"Configuration")]
namespace Microsoft.AspNet.SignalR.StockTicker
{
publicstatic class Startup
{
publicstatic void ConfigureSignalR(IAppBuilder app)
{
app.MapSignalR();
}
publicstatic void Configuration(IAppBuilder app)
{
Microsoft.AspNet.SignalR.StockTicker.Startup.ConfigureSignalR(app);
}
}
}
3 创建一个文件夹(命名规则:Hubs):用来放入我们的客户端调用服务器的方法
里面一定要有:
///<summary>
///链接成功的时候执行
///</summary>
///<returns></returns>
public override Task OnConnected()
{
return base.OnConnected();
}
4 客户端调用我们服务器
引入我们的js和
<scriptsrc="~/signalr/hubs"></script>
1:关联我们的服务器的hub类
var chat = $.connection.类名
启动我们的服务
$.connection.hub.start();
我们用chat.server.方法名字 来调用我们服务器的方法
如果我们要服务器调用我们的客户端的方法
chat.client.方法名
例子
$(function () {
//关联一个我们的服务器的hub类
var chat = $.connection.sendMessge;
//启动服务
$.connection.hub.start();
//客户端提供一个方法,让我们的服务器主动调用
chat.client.getMsg = function (username_text,msg) {
//alert("客户端被服务器主动调用" + msg);
$("#ul_msg").append("<li>" + username_text + ":" + msg + "</li>");
}
//登陆成功
chat.client.login_cg_back = function (username, cid) {
$("#select_text").append("<optionvalue='" +cid + "'>" + username + "</option>");
}
//发送消息
$("#msg_sendbtn").click(function () {
//调用前台的方法
chat.server.sendmsg( $("#select_text").val(),$("#username").val(), $("#msg").val());
chat.server.my_msg($("#username").val(), $("#msg").val());
});
});
服务器代码
public void sendmsg(string cid,string username,string msg)
{
Clients.Client(cid).getMsg(username,msg);
//注意这里有三个参数 all caller others 分别是全部,自己,其他
}
///<summary>
///给自己做个显示
///</summary>
///<param name="username"></param>
///<param name="msg"></param>
public void my_msg( string username, string msg)
{
Clients.Caller.getMsg(username, msg);
}
public void login_cg(string username)
{
Clients.Others.login_cg_back(username, Context.ConnectionId);
}
///<summary>
///链接成功的时候执行
///</summary>
///<returns></returns>
public override Task OnConnected()
{
return base.OnConnected();
}
Context.ConnectionId 得到这个通道的哈希值