1. 开发(代码下载

      新建一个ASP.NET Web项目,项目类型为MVC,将认证模式改为无身份认证。在程序包管理控制台输入如下语句,安装SignalR

      1. <span style="font-size:14px;">install-package Microsoft.AspNet.SignalR</span>

      为了便于管理,在项目中添加一个名为Hubs的文件夹,在文件夹上右键单击,选择Visual C#  >> Web >> SignalR >>SignalR 集线器类 ( V2 ),命名为ChatHub,这个类将是我们所有客户端调用的Hub服务,修改代码,代码如下:

      1. using System;
      2. using System.Collections.Generic;
      3. using System.Linq;
      4. using System.Web;
      5. using Microsoft.AspNet.SignalR;
      6. namespace SignalRChat_Part2.Hubs
      7. {
      8. public class ChatHub : Hub
      9. {
      10. public void Send(string name, string message)
      11. {
      12. //调用所有客户端的addNewMessageToPage function
      13. Clients.All.addNewMessageToPage(name, message);
      14. }
      15. }
      16. }

      接着,创建OWIN Startup 类,修改代码,代码如下:

      1. using System;
      2. using System.Threading.Tasks;
      3. using Microsoft.Owin;
      4. using Owin;
      5. [assembly: OwinStartup(typeof(SignalRChat_Part2.Startup))]
      6. namespace SignalRChat_Part2
      7. {
      8. public class Startup
      9. {
      10. public void Configuration(IAppBuilder app)
      11. {
      12. // 有关如何配置应用程序的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkID=316888
      13. app.MapSignalR();
      14. }
      15. }
      16. }

      然后,在HomeController中新增一个Action,命名为Chat,代码如下:

      1. public ActionResult Chat()
      2. {
      3. return View();
      4. }

      最后,创建Chat 视图,修改试图代码,代码如下:

      1. @{
      2. ViewBag.Title = "Chat";
      3. }
      4. <h2>Chat</h2>
      5. <div class="container">
      6. <input type="text" id="message" />
      7. <input type="button" id="sendmessage" value="Send" />
      8. <input type="hidden" id="displayname" />
      9. <ul id="discussion">
      10. </ul>
      11. </div>
      12. @section scripts {
      13. <!--注意:这里的jQuery脚本已经在模板页_Layout.cshtml中引用-->
      14. <script src="~/Scripts/jquery.signalR-2.2.1.min.js"></script>
      15. <!--signalr自动生成的脚本-->
      16. <script src="~/signalr/hubs"></script>
      17. <script>
      18. $(function () {
      19. //声明hub代理
      20. var chat = $.connection.chatHub;
      21. //创建后端要调用的前端function
      22. chat.client.addNewMessageToPage = function (name, message) {
      23. //将信息添加到页面上
      24. $('#discussion').append('<li><strong>' + htmlEncode(name) + '</strong>:' + htmlEncode(message) + '</li>');
      25. };
      26. //获取输入的名称
      27. $('#displayname').val(prompt('Enter your name:', ''));
      28. //将焦点定位在信息输入框中
      29. $('#message').focus();
      30. //开启链接
      31. $.connection.hub.start().done(function () {
      32. $('#sendmessage').click(function () {
      33. //调用后台hub的Send方法
      34. chat.server.send($('#displayname').val(), $('#message').val());
      35. //清除发送的内容,并将焦点定位到信息框
      36. $('#message').val('').focus();
      37. });
      38. });
      39. //该function防止JS注入
      40. function htmlEncode(value) {
      41. var encodeValue = $('<div/>').text(value).html();
      42. return encodeValue;
      43. }
      44. });
      45. </script>
      46. }
       

      运行,效果如图:

    2. 需注意的

      JS在调用Hub时,Hub的首字母小写,不管后端代码是大写还是小写,JS调用时首字母均小写,除非后台Hub类上已经定义了HubName 属性(如:[HubName("ChatHub")]),这种情况下,JS调用Hub时,根据HubName属性定义的名称走。

SignalR 2.x入门(二):SignalR在MVC5中的使用的更多相关文章

  1. SignalR入门二、使用 SignalR 2 实现服务器广播

    一.概述 这篇教程通过实现一个股票报价的小程序来讲解如何使用SignalR进行服务器端的推送,服务器会模拟股票价格的波动,并把最新的股票价格推送给所有连接的客户端,最终的运行效果如下图所示. 教程:使 ...

  2. SignalR系列教程:在MVC5中使用SignalR

    本章主要内容: 1:向MVC5添加SignaIr 2: 什么是集线器,如何创建集线器 3: 客户端通过jqery调用集线器 本文还是延续“SignaIR快速入门”中聊天室的例子进行讲解.首先我们通过V ...

  3. SignalR 2.0入门

    下载已完成的项目 本教程展示如何使用那么 SignalR 创建一个实时聊天应用程序.你会那么 SignalR 添加一个空的 ASP.NET web 应用程序,创建一个 HTML 页面发送并显示消息. ...

  4. SignalR 2.0 入门与提高

    SignalR 2.0 入门与提高 SignalR 2.0 最近整理了SignalR2.0 部分知识点,原文翻译,由于自己是土鳖,翻译得不好的地方,欢迎指正!仅供各位初学者学习! 第一节. 入门ASP ...

  5. ASP.NET SignalR 2.0入门指南

    ASP.NET SignalR 2.0入门指南 介绍SignalR ASP.NET SignalR 是一个为 ASP.NET 开发人员的库,简化了将实时 web 功能添加到应用程序的过程.实时Web功 ...

  6. SignalR的简单使用(二)

    原文:SignalR的简单使用(二) 之前提到SignalR代理在网页,通过生成的Js来完成相关的功能.但我不禁想一个问题, 难到SignalR的服务端就能寄存在web端吗,通过访问网页能方式才能启动 ...

  7. SignalR 2.0 入门与提高 转载https://www.cnblogs.com/vance/p/SignalR.html

    SignalR 2.0 最近整理了SignalR2.0 部分知识点,原文翻译,由于自己是土鳖,翻译得不好的地方,欢迎指正!仅供各位初学者学习! 第一节. 入门ASP.NET SignalR2.0 1. ...

  8. 《ASP.NET SignalR系列》第五课 在MVC中使用SignalR

    接着上一篇:<ASP.NET SignalR系列>第四课 SignalR自托管(不用IIS) 一.概述 本教程主要阐释了如何在MVC下使用ASP.NET SignalR. 添加Signal ...

  9. [渣译文] SignalR 2.0 系列: SignalR 自托管主机

    原文:[渣译文] SignalR 2.0 系列: SignalR 自托管主机 英文渣水平,大伙凑合着看吧…… 这是微软官方SignalR 2.0教程Getting Started with ASP.N ...

随机推荐

  1. 【cf789B】Masha and geometric depression(分类讨论/暴力)

    B. Masha and geometric depression 题意 在黑板上写数列,首项是b,公比是q,超过l时就停止不写.给定m个数,遇到后跳过不写.问一共写多少个数,如果无穷个输出inf. ...

  2. zabbix python 微信告警脚本

    测试zabbix的微信告警耗费了大量时间,使用了开源工具(OneOaaS weixin-alert).shell脚本工具(手动执行正常,服务器调用失败),均没有实现相关功能以下是自己优化过的Pytho ...

  3. 【题解】 bzoj1135: [POI2009]Lyz (线段树+霍尔定理)

    题面戳我 Solution 二分图是显然的,用二分图匹配显然在这个范围会炸的很惨,我们考虑用霍尔定理. 我们任意选取穿\(l,r\)的号码鞋子的人,那么这些人可以穿的鞋子的范围是\(l,r+d\),这 ...

  4. SDOI2017 Round1 简要题解

    我们 TM 怎么又要上文化课..我 哔哔哔哔哔哔 「SDOI2017」数字表格 题意 有 \(T\) 组数据,求 \[ \prod_{i = 1}^{n} \prod_{j = 1}^{m} fib[ ...

  5. Angular、React.js 和Node.js到底选谁?

    为了工作,程序员选择正确的框架和库来构建应用程序是至关重要的,这也就是为什么Angular和React之间有着太多的争议.Node.js的出现,让这场战争变得更加复杂,虽然有选择权通常是一件很棒的事情 ...

  6. 滚动ListView时图像顺序混乱

    本文选自StackOverflow(简称:SOF)精选问答汇总系列文章之一,本系列文章将为读者分享国外最优质的精彩问与答,供读者学习和了解国外最新技术.本文将为读者讲解滚动ListView时图像顺序混 ...

  7. windows7安装docker

    因为本机已经安装了git,所以这里取消勾选 配置环境变量 进入到D:\DockerToolbox 将D:\DockerToolbox下的boot2docker.iso 复制到C:\Users\my\. ...

  8. 为什么每次app访问服务器都建立新连接 导致服务器大量连接疯涨

    运维发现服务器有大量连接不释放,而且每次app访问都会建立新连接. netstat -antlp |grep ESTAB|grep 8080|wc -l    (访问服务器8080端口的已建立的连接数 ...

  9. 洛谷P2831 愤怒的小鸟 + 篮球比赛1 2

    这三道题一起做,有一点心得吧. 愤怒的小鸟,一眼看上去是爆搜,但是实现起来有困难(我打了0分出来). 还有一种解法是状压DP. 抛物线一共只有那么多条,我们枚举抛物线(枚举两个点),这样就能够预处理出 ...

  10. (转)从一道面试题彻底搞懂hashCode与equals的作用与区别及应当注意的细节

    背景:学习java的基础知识,每次回顾,总会有不同的认识.该文系转载 最近去面试了几家公司,被问到hashCode的作用,虽然回答出来了,但是自己还是对hashCode和equals的作用一知半解的, ...