SignalR是ASP.NET中一个非常新的、非常令人兴奋的特性。它提供了一个简单和干净的API,允许您创建实时web应用程序,服务器需要不断地将数据推送到客户端。常见的应用包括聊天、新闻推送、通知和多人游戏。下面显示的是在用户之间的聊天中使用signal-R的步骤。
1.通过选择“File”创建一个新项目。然后选择“New”选项。然后选择项目选项。选择的ASP。NET Empty Web Application ' from Web in Visual c#,并命名为' ChatApplication '。
2.添加一个新的Web表单来该项目。命名为home。aspx
3.然后添加“Microsoft.AspNet.SignalR.Core.dll”,' Microsoft.AspNet.SignalR.Owin.dll ', ' Microsoft.AspNet.SignalR.SystemWeb.dll ', ' Newtonsoft.Json.dll ', ' Microsoft.Owin.Host.SystemWeb.dll '等参考.
4.插入一个新文件夹添加脚本和名称文件夹“脚本”,然后添加‘jquery-1.6.4.js’,‘jquery.signalR-1.0.1.js’,‘jquery.signalR-1.0.1.min.js’,‘jquery-1.6.4.min.js’,‘jquery-1.6.4-vsdoc.js后下载从谷歌。
5.在项目中添加一个Class,并将其命名为chatHub.cs。然后在类中添加以下代码。
使用系统;
使用System.Collections.Generic;
使用来;
使用包含;
使用Microsoft.AspNet.SignalR;
名称空间ChatApplication
{
公共类chatHub:中心
{
public void Send(string name, string message)
{
Clients.All。sendMessage(名称、消息);
}
}
}
6.然后添加一个全局应用程序类并将其命名为Global。然后把下面的代码放进去。
使用系统;
使用System.Collections.Generic;
使用来;
使用包含;
使用System.Web.Security;
使用System.Web.SessionState;
使用System.Web.Routing;
名称空间ChatApplication
{
public class Global: System.Web.HttpApplication
{
Application_Start(对象发送者,EventArgs e)
{
RouteTable.Routes.MapHubs ();
}
Session_Start(对象发送者,EventArgs e)
{
}
protected void Application_BeginRequest(object sender, EventArgs e)
{
}
Application_AuthenticateRequest(对象发送方,EventArgs e)
{
}
protected void Application_Error(object sender, EventArgs e)
{
}
Session_End(对象发送者,EventArgs e)
{
}
Application_End(对象发送者,EventArgs e)
{
}
}
}
7.在家里。下面是Aspx的代码。
<%@ Page Language=" c# " AutoEventWireup="true" CodeBehind="home.aspx.cs" Inherits="ChatApplication. "家" % >
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
< html xmlns = " http://www.w3.org/1999/xhtml " >
<头runat = " server " >
<标题> < /名称>
< / >头
<身体>
<形式id = " frmHome " runat = " server " >
< div >
< ul id = " ulInbox " >
Name: Message .
< / ul >
< ul >
<李>
. txt
李< / >
< / ul >
< / div >
> < /形式
< script src = " http://code.jquery.com/jquery-1.8.2.min.js " type = " text / javascript " > < /脚本>
< script src = "脚本/ jquery.signalR-1.0.1.min.js " type = " text / javascript " > < /脚本>
< script src = " signalr /中心" type = " text / javascript " > < /脚本>
<脚本type = " text / javascript”>
$(函数(){
//动态创建代理
var chat = $.connection.chatHub;
//获取用户名并将其存储到消息的前面。
$ (" # txtName”)。val(提示('输入你的名字','));
//在聊天中心上声明一个函数,以便服务器可以调用它
chat.client.sendMessage = function (name, message) {
Var username = $('').text(name).html();
var chatMessage = $ (' < div / > ')。text(消息). html ();
$ (" # ulInbox”)。李append(“< >”+用户名+”:,“+ chatMessage + '李< / > ');
};
//启动连接
美元.connection.hub.start()。完成(函数(){
$ (" # btnSend”)。点击(函数(){
//在服务器上调用chat方法
chat.server.send ($ (' # txtName ') .val(),美元(# txtMessage) .val ());
$ (' # txtMessage ') .val (");
});
});
});
> < /脚本
< /身体>
< / html >
在上面的代码中,chat.server.send用于发送消息,send是chatHub.cs的两个参数如下所示。
公共无效发送(字符串的名字,字符串消息)
{
Clients.All。sendMessage(名称、消息);
}
它会从ChatHub呼叫所有客户。sendMessage(名称、消息)。它将在所有客户端页面中调用该函数。所有的客户使用sendMessage函数将接收名称和消息。
在主页上,我们已经写了代码,
chat.client.sendMessage =函数(名称、消息){
var用户名= $ (' < div / > ')。text(名字). html ();
varchatMessage = $ (' < div / > ')。text(消息). html ();
$(“# ulInbox”) .append (<李>的+用户名+”:,,”+ chatMessage +“李< / >”);
};
8.调试项目后,我们得到如下输出。下图显示了在两个浏览器上运行的项目,在两个系统上运行的浏览器是相同的。首先,它会询问用户的名字。在第一个浏览器中,我们放置名称Akhil,在第二个用户中,我们放置名称John。
9.在文本框第一个用户是Akhil,我们输入一条信息Hi,然后点击发送按钮。
10.阿基尔发送的信息将在约翰没有任何行动收到。此外,约翰将输入一个你好信息
文本框
然后点击发送按钮。
11.Hello消息将到达所有客户端。