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. TP5调用微信JSSDK 教程 —— 之异步使用

    细节请参考前一篇文章:JSSDK.PHP 修改下: <?php namespace jssdk; class Jssdk { private $appId; private $appSecret ...

  2. linux下执行sh脚本,提示Command not found解决办法

    1.确保用户对文件有读写及执行权限 oracle@linux-106:~/RMAN/bin> chmod a+x test.sh 2.然后修改文件格式(如果是从winodws搬过来的会显示dos ...

  3. MT【276】正切的半角公式

    若$\Delta ABC$满足:$\tan\dfrac{A}{2}\cdot\tan\dfrac{C}{2}=\dfrac{1}{3},b=\dfrac{4}{3}a$,则$\sin B=$_____ ...

  4. 【UOJ#236】[IOI2016]railroad(欧拉回路,最小生成树)

    [UOJ#236][IOI2016]railroad(欧拉回路,最小生成树) 题面 UOJ 题解 把速度看成点,给定的路段看成边,那么现在就有了若干边,然后现在要补上若干边,以及一条\([inf,\) ...

  5. 逆元(inv)

    当求解公式:(a/b)%m 时,因b可能会过大,会出现爆精度的情况,所以需变除法为乘法: 设c是b的逆元,则有b*c≡1(mod m): 则(a/b)%m = (a/b)*1%m = (a/b)*b* ...

  6. springboot之docker启动参数传递

    这几天有网友问,如何在使用docker的情况下传递spring.profiles.active=test,也就是说springboot切换配置文件.以往我们直接通过java启动jar的时候,直接跟上- ...

  7. Vim auto-pairs设置选项

    let g:AutoPairs = {'(':')', '[':']', '{':'}',"'":"'",'"':'"'} 设置要自动配对的 ...

  8. java开发JDBC连接数据库代码

    JDBC连接数据库,创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 这通过java.lang.Class类的静态方法forName(String className)实 ...

  9. 第十六节、基于ORB的特征检测和特征匹配

    之前我们已经介绍了SIFT算法,以及SURF算法,但是由于计算速度较慢的原因.人们提出了使用ORB来替代SIFT和SURF.与前两者相比,ORB有更快的速度.ORB在2011年才首次发布.在前面小节中 ...

  10. Unity 后处理堆

    Unity安装后处理的过程:windows---PacageManager---Post Processing Post Processing后处理堆需要知道要修改那个相机渲染的内容,先定位到相机,再 ...