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. 爬虫_豆瓣电影top250 (正则表达式)

    一样的套路,就是多线程还没弄 import requests import re import json headers = 'Mozilla/5.0 (Windows NT 10.0; WOW64) ...

  2. Elasticsearch 安全篇

    为什么要开放外网访问Elasticsearch:1.一些插件监听使用,方便及时了解线上数据的情况,比如说head插件等2.为了HTTP直接访问,有的同学考虑到通过后台TCP查询,然后返回数据,还不如直 ...

  3. Codeforces Round #453 (Div. 1) D. Weighting a Tree(构造)

    题意 一个 \(n\) 个点 \(m\) 条边的无向连通图中每个点都有一个权值,现在要求给每条边定一个权值,满足每个点的权值等于所有相连的边权之和,权值可负. 题解 如果图是一棵树,那么方案就是唯一的 ...

  4. 【BZOJ5300】[CQOI2018]九连环 (高精度,FFT)

    [BZOJ5300][CQOI2018]九连环 (高精度,FFT) 题面 BZOJ 洛谷 题解 去这里看吧,多么好 #include<iostream> #include<cstdi ...

  5. nginx.conf(centos7 1.14)主配置文件修改

    #nginx1.14 centos7# For more information on configuration, see:# * Official English Documentation: h ...

  6. Fiddler 安装配置及使用技巧

    下载最新版即可: https://www.telerik.com/fiddler pc配置: pc端上的配置较为简单,主要是记录一下遇到的一些bug以及解决方法. options>HTTPS  ...

  7. Nginx反向代理后端多节点下故障节点的排除思路

    仔细想来,其实是个非常简单的问题:开发和运维觉得两个后端节点跑起来压力太大了,就扩充了两个新的后端节点上去,这一加就出问题了,访问时页面间歇性丢失,这尼玛什么情况...想了半天没思路,查了Nginx的 ...

  8. A1117. Eddington Number

    British astronomer Eddington liked to ride a bike. It is said that in order to show off his skill, h ...

  9. [luogu3939][数颜色]

    题目链接 思路 对于每一种颜色都建立一个动态开点线段树.然后每次查询的时候就去这个颜色的线段树上查询就行了.修改之后不要忘记交换颜色. 这个题目数据有点强.抄了个比较快的读入优化才卡过去. 代码 /* ...

  10. 被addPropertyChangeListener("...",this)差点搞崩溃

    以前常用的是addPropertyChangeListener(this)方法 记得有一天我发现还有另一种写法: addPropertyChangeListener(String propertyNa ...