MVC5使用SignalR进行双向通信 (1)
@a604572782
2015-08-10 09:01
字数 2133
阅读 1245
MVC5使用SignalR进行双向通信 (1)
配置SignalR
- 在NuGet中通过 install-package Microsoft.AspNet.SignalR 命令进行安装
- 在Scripts文件夹中会添加 jquery.signalR-2.2.0.js 和 jquery.signalR-2.2.0.min.js
- 在startup的configuration方法中加入
app.MapSignalR();
app.MapSignalR()是把Signal Hub 映射到/signal
using Owin;using Microsoft.Owin;[assembly: OwinStartup(typeof(SignalRChat.Startup))]namespace SignalRChat{public class Startup{public void Configuration(IAppBuilder app){// Any connection or hub wire up and configuration should go hereapp.MapSignalR();}}}
后台代码
- 在Model文件夹中新建一个ChatHub继承自Hub,写一个send方法,用户接受客户端的请求
public class ChatHub:Hub{/// <summary>/// 发送信息给所有用户/// </summary>/// <param name="message"></param>public void SendAll(string name,string message){//发送给所有客户端Clients.All.sendAll(name,message);}}
前台代码
- 新建一个视图名为
Chat.cshtml - 加入如下代码
@{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>//在Layout.cshtml 中定义了名为 scripts 的section@section scripts {<!--Script 引用. --><!--jquery 在 _Layout.cshtml 中已经被引用. --><!--引用 SignalR. --><script src="~/Scripts/jquery.signalR-2.1.0.min.js"></script><!--该script会自动生成,添加到引用中 --><script src="~/signalr/hubs"></script><!--SignalR 关键js语句块.--><script>$(function () {// 引用hub委托var chat = $.connection.chatHub;// 添加一个方法供hub回调chat.client.sendAll = function (name,message) {// 处理返回的数据到页面$('#discussion').append('<li><strong>' + htmlEncode(name) + '</strong>: '+ message +'</li>');};// 弹出一个框存储姓名$('#displayname').val(prompt('输入你的名字:', ''));$('#message').focus();// 打开连接$.connection.hub.start().done(function () {$('#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>}
对Signal 工作原理进行下分析:
1. 页面加载是弹出一个框输入姓名
2. 在页面加载的时候,先创建一个hub引用var chat = $.connection.chatHub
3. 通过$.connection.hub.start()初始化连接
初始化连接后通过$.connection.hub.start().done()调用回调函数。
在这个回调函数中绑定了个点击事件当按钮点击时向ChatHub中的send方法发出请求,后台则会通过Clients.All.sendAll(name,message)向所有在线客户端发送信息客户端会调用在js中定义的sendAll方法,通过在sendAll方法进行数据处理实时的显示
SignalR MVC
+
+
+
+
+
+
+
+
+
+
MVC5使用SignalR进行双向通信 (1)的更多相关文章
- MVC5使用SignalR进行双向通信(1)
MVC5使用SignalR进行双向通信 (1) 配置Signal 在NuGet中通过 install-package Microsoft.AspNet.SignalR 命令进行安装 在Scripts文 ...
- 一步一步学习SignalR进行实时通信_1_简单介绍
一步一步学习SignalR进行实时通信\_1_简单介绍 SignalR 一步一步学习SignalR进行实时通信_1_简单介绍 前言 SignalR介绍 支持的平台 相关说明 OWIN 结束语 参考文献 ...
- ASPNET_WEBAPI快速学习02
这部分内容的学习,已经放了大半年时间了,果断补充上,尽早将过去遗留的老技术坑都补上.首先将介绍服务幂等性的概念和相关解决方案,这部分也将是本文的理解难点,由于WebAPI是一种Restful风格服务的 ...
- 如何使用Microsoft技术栈
Microsoft技术栈最近有大量的变迁,这使得开发人员和领导者都想知道他们到底应该关注哪些技术.Microsoft自己并不想从官方层面上反对Silverlight这样的技术,相对而言他们更喜欢让这种 ...
- 【开源】OSharp框架解说系列(1):总体设计及系列导航
系列文章导航 [开源]OSharp框架解说系列(1):总体设计 [开源]OSharp框架解说系列(2.1):EasyUI的后台界面搭建及极致重构 [开源]OSharp框架解说系列(2.2):EasyU ...
- 智能打印SDK-源码剖析
开源地址:http://www.dnnode.com/ 软件下载地址:http://www.dnnode.com/在线展示:http://www.dnnode.com/help.html 前面的文章, ...
- SignalR系列教程:在MVC5中使用SignalR
本章主要内容: 1:向MVC5添加SignaIr 2: 什么是集线器,如何创建集线器 3: 客户端通过jqery调用集线器 本文还是延续“SignaIR快速入门”中聊天室的例子进行讲解.首先我们通过V ...
- SignalR + MVC5 简单示例
本文和前一篇文章很类似,只不过是把 SignalR 应用在了 MVC 中 新建项目,选择 MVC 模板 安装 SignalR Install-Package Microsoft.AspNet.Sign ...
- SignalR 2.x入门(二):SignalR在MVC5中的使用
开发(代码下载) 新建一个ASP.NET Web项目,项目类型为MVC,将认证模式改为无身份认证.在程序包管理控制台输入如下语句,安装SignalR <span style="font ...
随机推荐
- Sass函数:数字函数-min()函数、max()函数
min()函数 min() 函数功能主要是在多个数之中找到最小的一个,这个函数可以设置任意多个参数: >> min(1,2,1%,3,300%) 1% >> min(1px,2 ...
- Linux的启动SD卡的格式化方法
要在OMAP3530上运行Linux,首先要知道如何启动OMAP3530,并且将MLO,XDLR,UBOOT,UImage以及文件系统等镜像程序下载到OMAP3530的芯片中去. OMAP3530提供 ...
- Nginx配置参数详解参考示例
user nobody; worker_processes 2; events{ worker_connections 1024; } http{ #设置默认类型为二进制流 default_type ...
- https://geewu.gitbooks.io/rabbitmq-quick/content/RabbitMQ%E5%9F%BA%E7%A1%80%E6%93%8D%E4%BD%9C.html
https://geewu.gitbooks.io/rabbitmq-quick/content/RabbitMQ%E5%9F%BA%E7%A1%80%E6%93%8D%E4%BD%9C.html
- python socket基本连接功能实现
socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信 在应用中,要写两个程序来通信,一个是服务器端程序,一个是客户端程序 ...
- 使用Fiddler为满足某些特定格式的网络请求返回mock响应
假设我想对本地Java程序发起的调用SAP Hybris web service https://jerrywang.com:9002/rest/v2/electronics/users/ 这个网络请 ...
- Java反射及注解学习- 反射的使用 - JDK动态代理
代理模式基本概念:1.代理模式的作用:为其他对象提供一种以控制对方的访问在某种情况下,一个客户不想或者不能直接引用另一个对象,代理可以在客户端和目标对象之间起到中介的作用代理的角色:(1)抽象角色:声 ...
- Vue的跨域设置
1.在使用vue开发的时候经常要涉及到跨域的问题,其实在vue cli中是有我们设置跨域请求的文件的. 2.当跨域无法请求的时候我们可以修改工程下config文件夹下的index.js中的dev:{} ...
- C#_winform登陆框验证码的实现
验证码技术已愈来愈成熟,从最初的数字.字母.字符.汉字已经到目前的语言,其应用也甚广,之前大多数只有在网站上可以看到,现在在一些客户端软件也经常可见(比如证券相关软件).之前做的一个基于 C# 客户端 ...
- create-react-app 配置 修改
1.端口号修改:https://www.jianshu.com/p/80a7603dda70(亲测有效) 在 根据 package.json 的启动,node_modules文件夹里面搜索reac ...