在网站开发中,时常需要使用消息推送功能,http协议是无状态连接,我们需要一个类似桌面程序中socket保持服务器和客户端连接的技术。signalr就是这样一个技术,他能保持网站页面和服务器的一个长连接,时刻监听服务器端的信息。实现一个简单的signalr功能步骤如下。

1.新建一个.net项目,使用Nuget引用signalr。会在Script文件下生成jquery.signalR-2.2.0.js文件。

2.添加Startup类,注册signalr。

 using Microsoft.Owin;
using Owin; [assembly: OwinStartup(typeof(VipSignalR.Startup))] namespace VipSignalR
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}

3.添加集线器类ChatHub.cs

using Microsoft.AspNet.SignalR;

namespace VipSignalR
{
public class ChatHub : Hub
{
public void Send(string name, string message)
{
Clients.All.ReceiveMessage(name, message);
}
}
}

4.添加前台消息发送和接受的代码

(1)新建一个页面。

(2)添加html。

your name: <input type="text" id="nameTxt"/><br />
message: <input type="text" id="messageTxt" /><br />
<input type="button" id="sendBtn" value="发送" /><br /> 消息记录:<br/>
<div id="msgDiv"></div>

(3)引用js文件。

<script src="~/Scripts/jquery-1.6.4.js"></script>
<script src="~/Scripts/jquery.signalR-2.2.0.js"></script>
<script src="~/signalr/hubs"></script>

其中/signalr/hubs是通过chathubs.cs生成的js文件,可在浏览器resource查看。我们通过这个js文件使用在chathubs.cs中定义的方法。

(4)使用signalr。

<script>
$(function () {
// 引用自动生成的集线器代理
//名称和hub类相同,首字母小写
var chat = $.connection.chatHub; //接受消息,方法名称和参数和hub类中动态解析方法名相同
chat.client.receiveMessage = function (name, message) {
var msg = "<div>" + name + ": " + message + "</div>";
$("#msgDiv").append(msg);
} // 集成器连接开始
$.connection.hub.start().done(function () {
$('#sendBtn').click(function () {
//发送消息,方法名和参数和hub类对应,首字母小写
chat.server.send($("#nameTxt").val(), $('#messageTxt').val());
});
});
});
</script>

5.运行。通过两个浏览器来测试,可达到如下效果。

最新文章

  1. poj3984迷宫问题 广搜+最短路径+模拟队列
  2. [vim配置]windows下在vim中使用gcc/g++编译调试c/cpp文件
  3. jquery.util.easyui.dialog
  4. [Javascript] Lodash: Refactoring Simple For Loops (_.find, _.findLast, _.filter)
  5. JSON 入门
  6. 000-C#基础
  7. 自定义标签体、MVC
  8. Linear Regression(线性回归)(二)—正规方程(normal equations)
  9. css重要属性之辩
  10. unity插件开发——AssetDatabase
  11. Swagger UI 与SpringMVC的整合
  12. PHP实现字符串转义和还原
  13. python内置函数每日一学 -- any()
  14. 【jdk源码1】TreeMap源码学习
  15. asp.net分页之AJAX 分页
  16. linux 查看系统编码和修改系统 编码方法
  17. pace.js简介
  18. Fiddler Session标志
  19. jsp生成好看的验证码
  20. lintcode-425-电话号码的字母组合

热门文章

  1. java 字符串池【转】
  2. 【读英文文档】Whetting Your Appetite(刺激你的食欲)
  3. CSS学习笔记三:自定义单选框,复选框,开关
  4. Java(四、类和对象)
  5. 基于 HTML5 WebGL 的低碳工业园区监控系统
  6. Java移位运算符详解实例
  7. 开机出现 grub rescue&gt; 终端模式修复方法
  8. 巩固java(五)----通过实例理解java多态
  9. 51单片机GPIO口模拟串口通信
  10. Selenium 3 没办法启用指定的Firefox Profile