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. windows 路由转发

    netsh interface ipv6 install 将内网的2433端口转发到外网的11111端口netsh interface portproxy add v4tov4 listenaddre ...

  2. Linux内核进程

    公司数据库机器报警进程数高于1500,登进去ps命令看了一下,这么多进程并不认识,就在网上找了一些关于linux进程的资料,如下: idle 进程的pid=0,是由系统自动创建的第一个进程,也是唯一的 ...

  3. sql 语句查所有父级

    常见问题,给一个记录ID,查出它的所有父级,直到顶级 使用SMSS,sql server,找到一个办法. 思路是分两步,先循环找到所有父级的ID,再用IN查出所有父级 列说明  ID=PK  Pare ...

  4. HDU 6319 Problem A. Ascending Rating(单调队列)

    要求一个区间内的最大值和每次数过去最大值更新的次数,然后求每次的这个值异或 i 的总和. 这个序列一共有n个数,前k个直接给出来,从k+1到n个数用公式计算出来. 因为要最大值,所以就要用到单调队列, ...

  5. hdu1394逆序数(线段树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 题目大意:逆序数:即假设在数组a中,假如i<j,但是a[i]>a[j]. 现在有一个 ...

  6. A1122. Hamiltonian Cycle

    The "Hamilton cycle problem" is to find a simple cycle that contains every vertex in a gra ...

  7. [luogu1341][无序字母对]

    luogu1341 思路 欧拉回路和欧拉路的裸题,首先判断是否存在欧拉路或者欧拉回路.当且仅当途中每个点的度数都为偶数时,存在欧拉回路.当且仅当图中度数为奇数的点的个数为2时,存在欧拉路.如果存在欧拉 ...

  8. Flask 自定义过滤器多个参数传入

    非完整HTML文件: <div class="container" style="margin-top:50px;"> <div class= ...

  9. react-native-deprecated-custom-components

    速记:从0.44版本开始,Navigator被从react native的核心组件库中剥离到了一个名为react-native-deprecated-custom-components的单独模块中. ...

  10. Linux批量修改(删除)文件名某些字符(rename命令)

    假设在路径C:/下存在多个类似以下的文件名 file_nall_abc1.txt file_nall_abc2.txt file_nall_abc3.txt file_nall_abc4.txt fi ...