SignalR系列教程:在MVC在使用SignalR

本章主要内容:

1:向MVC5添加SignaIr

2: 什么是集线器,如何创建集线器

3: 客户端通过jqery调用集线器

本文还是延续“SignaIR快速入门”中聊天室的例子进行讲解。首先我们通过Visual Studio创建MVC Web应用,并使用“程序包管理控制台”执行“Install-PackAge Microsoft.AspNet.SignaLR”安装最新版本的SignaLR。

在解决方案中我们新建一个名为“Hubs”的文件夹,然后在文件夹内新建一个“集线器”,并将类命名为ChatHub.cs.

using Microsoft.AspNet.SignalR;

namespace Mvc_SignaIR.Hubs
{
    public class ChatHub : Hub
    {
        public void Hello()
        {
            Clients.All.welcome("大家好,欢迎阅读本篇文章");
        }

        public void Send(string name, string message)
        {
            Clients.All.addNewMessageToPage(name,message);
        }
    }
}

我们新建一个OWIN Startup类,在Configuration方法中注册SignaLR集线路由

using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(Mvc_SignaIR.Startup))]

namespace Mvc_SignaIR
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();
        }
    }
}

我们新建一个Home控制器,添加一个名为“Chat”的Action,并添加一个不具有模型的View

@{
    ViewBag.Title = "Chat";
}

<h2>Chat</h2>

<div class="container">
    <input type="text" id="message" />
    <input type="button" id="sendmessage" value="Send" />
    <input type="hidden" id="displayname" />
    <ul id="discussion"></ul>
</div>

@section scripts {
    <script src="~/Scripts/jquery.signalR-2.2.0.min.js"></script>
    <script src="~/signalr/hubs"></script>
    <script>
        $(function() {
            var chat = $.connection.chatHub;
            chat.client.addNewMessageToPage = function(name, message) {
                $(‘#discussion‘).append(‘<li><strong>‘ + htmlEncode(name)
                    + ‘</strong>: ‘ + htmlEncode(message) + ‘</li>‘);
            };

            chat.client.welcome = function (data) {
                //当后台触发了Hello方法的时候会进行回调当前事件
                alert(data);
            }

            $(‘#displayname‘).val(prompt(‘Enter your name:‘, ‘‘));
            $(‘#message‘).focus();
            $.connection.hub.start().done(function () {
                chat.server.hello(); //连接创建成功后台进行回调
                $(‘#sendmessage‘).click(function() {
                    chat.server.send($(‘#displayname‘).val(), $(‘#message‘).val());
                    $(‘#message‘).val(‘‘).focus();
                });
            });
        });

        function htmlEncode(value) {
            var encodedValue = $(‘<div />‘).text(value).html();
            return encodedValue;
        }
    </script>
}

运行项目,即可看到效果

时间: 2024-10-30 18:56:13

SignalR系列教程:在MVC在使用SignalR的相关文章

SignalR系列教程:SignalR快速入门

---恢复内容开始--- 本篇是SignalR系列教程的第一篇,本篇内容介绍了如何创建SignalR应用,如何利用SignalR搭建简易的聊天室等,本篇内容参考自:http://www.asp.net/signalr/overview/older-versions/tutorial-getting-started-with-signalr,文中会有我对实例代码的一些理解. 首先我们创建ASP.NET空程序,并使用“程序包管理控制台”执行“Install-PackAge Microsoft.Asp

史上最全面的SignalR系列教程-目录汇总

1.引言 最遗憾的不是把理想丢在路上,而是理想从未上路. 每一个将想法变成现实的人,都值得称赞和学习. 致正在奔跑的您! 2.SignalR介绍 SignalR实现服务器与客户端的实时通信 ,她是一个面向 ASP.NET 开发人员的库,可简化将实时 web 功能添加到应用程序的过程. 实时 web 功能是让服务器代码将内容推送到连接的客户端立即可用,而不是让服务器等待客户端请求新数据的能力. 3.百度百科给它的定义 实现实时通信. 什么是实时通信的Web呢?就是让客户端(Web页面)和服务器端可

SignalR系列教程:服务器广播与主动数据推送

本篇是本系列入门篇的最后一遍,由于工作关系,接触SignalR的时间不是很多.等下次有空的话我会写一个利用“SignalR”开发一个在线聊天室的系列博文.近期的话我更偏向于更新框架设计相关的文章,到时候我会在文章中分享我在工作中开发的“日志框架”.“缓存框架”,“分布式下载框架”等.有兴趣的朋友可以关注我,一起交流. 本篇博文参考:https://www.asp.net/signalr/overview/getting-started/tutorial-server-broadcast-with

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

接着上一篇:<ASP.NET SignalR系列>第四课 SignalR自托管(不用IIS) 一.概述 本教程主要阐释了如何在MVC下使用ASP.NET SignalR. 添加SignalR库到MVC中. 创建hub和OWIN startup 类来推送内容到客户端. 在页面中使用SignalR jQuery 库发送消息和呈现从来得更新. 下面屏幕截图展示了一个完成的聊天应用程序 二.创建项目 1.用MVC5 .NET4.5 创建一个名为SignalRChat的项目 2.改变授权. 3.选择 N

《ASP.NET SignalR系列》第四课 SignalR自托管(不用IIS)

接着上一篇:<ASP.NET SignalR系列>第三课 SignalR的支持平台 一.概述 SignalR常常依托于ASP.NET应用程序运行于IIS中,但它还可以自我托管(比如作为console winform.Windows service).只要我们使用self-host库就可以了. 该库向所有的SignalR 2库一样,构建于OWIN (Open Web Interface for .NET).OWIN定义了一个在.NET web 服务端和web 应用程序的抽象. OWIN解耦了从服

在 Asp.NET MVC 中使用 SignalR 实现推送功能 [转]

在 Asp.NET MVC 中使用 SignalR 实现推送功能 罗朝辉 ( http://blog.csdn.net/kesalin ) CC许可,转载请注明出处 一,简介 Signal 是微软支持的一个运行在 Dot NET 平台上的 html websocket 框架.它出现的主要目的是实现服务器主动推送(Push)消息到客户端页面,这样客户端就不必重新发送请求或使用轮询技术来获取消息. 可访问其官方网站:https://github.com/SignalR/ 获取更多资讯. 二,实现机制

在 Asp.NET MVC 中使用 SignalR 实现推送功能

一,简介 Signal 是微软支持的一个运行在 Dot NET 平台上的 html websocket 框架.它出现的主要目的是实现服务器主动推送(Push)消息到客户端页面,这样客户端就不必重新发送请求或使用轮询技术来获取消息. 二,实现机制 SignalR 的实现机制与 .NET WCF 或 Remoting 是相似的,都是使用远程代理来实现.在具体使用上,有两种不同目的的接口:PersistentConnection 和 Hubs,其中 PersistentConnection 是实现了长

MVC中使用SignalR

MVC中使用SignalR打造酷炫实用的即时通讯功能附源码 前言,现在这世道写篇帖子没个前言真不好意思发出来.本贴的主要内容来自于本人在之前项目中所开发的一个小功能,用于OA中的即时通讯.由于当时走的太急,忘记把代码拿出来.想想这已经是大半年前的事情了,时间过了这么久,在当时最新的SignalR2.0.1到现在已经变成了2.2.昨天晚上特地熬了个夜,重新又把它写出来做了一个小小的Demo.当然我只是大自然的搬运工,这个SignalR即时通讯功能里面有一些前端的类库不是我自己写的.我只是改吧改吧~

ASP.NET MVC框架开发系列教程

本系列教程是自己在工作中使用到而记录的,如有错误之处,请给与指正 文章目录 MVC4 开篇 第一章 初识MVC4 第二章 下山遇虎(@helper) 第三章 Models模块属性详解 第四章 在MVC4.0中对脚本以及样式表的引用变化 第五章 MVC之Bundle详解