Nuget添加 SignalR包

1、构建一个MyHubServer服务端类

定义类的特性标签为

 [HubName("chatHub")]
public class MyHubServer : Hub
{

必须继承Hub基类,基类中提供了如下操作

 public abstract class HubBase : IHub, IUntrackedDisposable, IDisposable
{
protected HubBase(); public HubCallerContext Context { get; set; }
public IGroupManager Groups { get; set; } public void Dispose();
public virtual Task OnConnected();
public virtual Task OnDisconnected(bool stopCalled);
public virtual Task OnReconnected();
protected virtual void Dispose(bool disposing);
}
Context :上下问对象
Groups : 分组
以及下面的三个虚方法,必要是可以重写
OnConnected 建立连接、OnDisconnected 断开连接、OnReconnected 从新连接构建客Js户端 ,安装了Nuget包后会看到如下js文件,将应用页面添加js引用,基于Jquery的

引用客户端JS包

 <script src="~/Scripts/jquery.signalR-2.2.3.min.js"></script>
<script src="~/signalr/hubs"></script>

Notes:第二个Js是Signalr生成的js文件路径,项目目录中不会存在

 <script>

       $(function () {
//服务器端对应的集线器
var hub = $.connection.chatHub; ////客户端接收消息 上线通知
hub.client.addTips = function (msg) {
$('#discussion').html('<span><strong></strong> ' + htmlEncode(msg) + '</span>');
};
//启动连接成功
$.connection.hub.start().done(function () {
$('#sendmessage').click(function () {
hub.server.sendmsg($('#contact').val(), $('#sendid').val(), $('#sendname').val()); $('#contact').val('').focus(); });
});
}); function htmlEncode(value) {
var encodedValue = $('<div />').text(value).html();
return encodedValue;
}
</script>

需要注意的是这个

这里连接的chartHub就是服务端的 HubName属性标签配置的名称

以如下客户排单为例子:

当没有客户对接人员上线发送会提示

我们打开2个浏览器分别登上不同的账号

当客户对接人员使用功能时候提示

使用另一个账号发送消息,客户对接人员会实时接受消息,同时将这些消息保留数据库记录

接下来看下服务端的具体代码

 public void sendmsg(string contact, string sendid, string sendname)
{
   Clients.Client(Context.ConnectionId).addTips("客户接待人员还没有上线");

服务端发送方法,这里与客户端Js调用服务端方法是对应的

服务端  中的 Clients对象包含了3个类别

All:向所有的客户端发送消息

Group:向分组包含的客户端发送消息

Client:向某一个指定客户端发送消息

基本就是对这些进行操作,包括群聊的处理都是通过以上三个方式来实现在线聊天功能

												

Asp.Net Mvc5 结合 SignalR2.0+ 实现消息交互简单例子的更多相关文章

  1. activemq消息生产者与消息消费者简单例子

    消息生产者HelloQueueProducer.java package activemq.test; import javax.jms.Connection;import javax.jms.Con ...

  2. 关于Solr6.0中solrj使用简单例子

    solr6.0的solrJ接口有部分变化,下面列出了简单的使用实例,有需要的朋友可以参考下. package com.ailk.solr6; import java.io.IOException; i ...

  3. Django2.0 正则表示匹配的简单例子

    在Django中,使用正则表达式,匹配Url 默认情况下,url固定格式如下: urlpatterns = [ path('admin/', admin.site.urls), ] 如果需要使用正则表 ...

  4. 彻底解决asp.net mvc5.2.2:vs2013 cshtml视图文件报错(当前上下文中不存在名称“model”,ViewBag,Url)

    最近遇到一个奇葩的问题,在vs2013下cshtml视图文件报错,出现当前上下文中不存在名称“model”,ViewBag,Url等等),在视图中也没有智能提示了,用@model声明视图的model类 ...

  5. Asp.Net MVC5入门学习系列④

    原文:Asp.Net MVC5入门学习系列④ 添加Model且简单的使用EF 对于EF(EntityFramework)不了解的朋友可以去百度文科或者在园子里搜一些简资源看下,假如和我一样知道EF的概 ...

  6. ASP.NET MVC5基础-控制器(Controller)详解

    在上文ASP.NET MVC5基础 – MVC文件架构中我们简单了解了下控制器Controller的作用,本文我将详细介绍控制器Controller的使用方法. Controller的运行过程 上文我 ...

  7. MVC5中使用SignalR2.0实现实时聊天室

    原文 MVC5中使用SignalR2.0实现实时聊天室 有时候需要浏览器和服务端保持实时的通讯(比如在线聊天),SignalR的出现让这一切变得非常简单.它能够让服务端向客户端实时的推送消息.如果用户 ...

  8. SignalR2.0开发实例之——群发消息

    一.前言 ASP .NET SignalR 是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.什么是实时通信的Web呢?就是让客户端(Web页面)和服务器端可以互相 ...

  9. ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(五) 之 加好友,加群流程,消息管理和即时消息提示的实现

    前言 前前一篇留了个小问题,在上一篇中忘了写了,就是关于LayIM已经封装好的上传文件或者图片的问题.对接好接口之后,如果上传速度慢,界面就会出现假死情况,虽然文件正在上传.于是我就简单做了个图标替代 ...

随机推荐

  1. 使用doxygen静态分析开源代码

    doxygen是一款生成开源代码说明文件的工具,因为不需要编译源码,用作代码的分析也十分方便. 一.安装 sudo apt-get install graphviz sudo apt-get inst ...

  2. 【转】如何向XML内插入一个字符串片段

    转自:http://bbs.csdn.net/topics/190051229   5楼 string filepath = Server.MapPath("你的xml文件"); ...

  3. MT【79】任意和存在并存

    评:一般这个题目是先考虑$x$的存在性,再考虑$t$的任意性.最后按照动区间定轴类型处理,考虑区间和对称轴的相对位置.

  4. 浅入 dancing links x(舞蹈链算法)

    abastract:利用dancing links 解决精确覆盖问题,例如数独,n皇后问题:以及重复覆盖问题. 要学习dacning links 算法,首先要先了解该算法适用的问题,精确覆盖问题和重复 ...

  5. 【BZOJ2563】阿狸和桃子的游戏(贪心)

    [BZOJ2563]阿狸和桃子的游戏(贪心) 题面 BZOJ 题解 边权平均分给两个点就好了. #include<iostream> #include<cstdio> #inc ...

  6. php获取汉字拼音首字母的方法

    现实中我们经常看到这样的说明,排名不分先后,按姓名首字母进行排序.这是中国人大多数使用的排序方法.那么在php程序中该如何操作呢? 下面就分享一下在php程序中获取汉字拼音的首字母的方法,在网上搜到的 ...

  7. golang(01) linux环境搭建和编码

    1 在自己的工作目录下建立一个goproject文件夹 /home/secondtonone/goproject 2 在文件夹下建立如下三个文件 bin pkg srcbin 保存执行go insta ...

  8. webapi框架搭建系列博客

    webapi框架搭建系列博客 webapi框架搭建-创建项目(一) webapi框架搭建-创建项目(二)-以iis为部署环境的配置 webapi框架搭建-创建项目(三)-webapi owin web ...

  9. JVM内存管理---垃圾收集器

    说起垃圾收集(Garbage Collection,GC),大部分人都把这项技术当做Java语言的伴生产物.事实上,GC的历史远比Java久远,1960年诞生于MIT的Lisp是第一门真正使用内存动态 ...

  10. bzoj千题计划174:bzoj1800: [Ahoi2009]fly 飞行棋

    http://www.lydsy.com/JudgeOnline/problem.php?id=1800 圆上两条直径构成矩形的对角线 #include<cstdio> using nam ...