博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用SignalR 2.0开发客服系统[系列1:实现群发通讯]
阅读量:6713 次
发布时间:2019-06-25

本文共 2986 字,大约阅读时间需要 9 分钟。

原文:

前言

  先说一下我为什么会写这个博客吧,(首先说一下,我是一个小菜鸟,讲的不好请指导 - -,)

   前段时间公司的项目涉及到在B/S上使用即时通讯,(其实就是做一个B/S的客服系统),当时公司很多大牛都说比较难搞,涉及到很多东西.

  按照我的知识体系..因为之前做过C/S的即时通讯,基于Socket的..很麻烦 - -,很多坑,所以我也说..有点复杂,所以这个功能就被搁置下来了

  加上项目上线各种忙就忘记了这个事,现在项目进入后期测试阶段就抽出了时间想这个问题,问了大神,说是可以使用SignalR 技术实现.

  当然,我是直接没听过这个技术,所以去查了很多资料,给我的感觉就是这个SignalR 实在是太方便了.

  这里我们就不详细的讲SignalR 到底怎么实现和他的机制了,我们只拿来用,有兴趣的可以自己去看这两篇文章.

  http://blog.darkthread.net/post-2013-12-03-inside-signalr-transport.aspx

  http://blog.jobbole.com/82746/

  知道了技术,剩下的就是实现功能,经过查资料发现,很多关于SignalR 的博客和资料都使用的1.XXX版本 现在SignalR最新的是2.几的版本,发现1.0和2.0版本的用法差距还是很大的.

  所以想写个系列的博客来讲解一下.

  废话不多说了 - -,我们开始.

 

  

  

使用环境

 开发工具:VS2013 旗舰版

 数据库:未用

 操作系统:WIN7旗舰版

 

项目创建

首先

第一步:我们创建一个ASP.NET Web的空项目,命名为SignalRTest如下图:

 

第二步:我们右键项目,添加一个SignalR集线器(V2)新建项,如下图:

 

添加这个之后我们来看看项目文件夹,会出现这些东西:

 

 

蓝色框中为我们所要用到的SignalR集线器类,红色的框为我们要用到的JS库(注意:在添加SignalR集线器之后会自动添加Script这个文件夹)

 

第三步:添加OWIN StartUp类 (注:这里是和1.0版本区别之一,1.0版本不用加这个,需要注册路由路径即可)

如下图:

 

这样,我们就算基本完成SignalR的创建了,下面我们看代码

 

首先我们来看看SignalR类中的代码:

 

1     public class MoveTextHub : Hub2     {3         public void Hello()4         {5             Clients.All.hello();6         }7 8     }

继承自HUB类,我们可以跳转到其中看,值得注意的是这个SignalR是开源的,有兴趣的可以在GitHub上下载源码研究研究,或者自己扩展.

 

下面我们来看看OWIN StartUp代码

using System;using System.Threading.Tasks;using Microsoft.Owin;using Owin;[assembly: OwinStartup(typeof(SignalRTest.MyStartup))]namespace SignalRTest{    public class MyStartup    {        public void Configuration(IAppBuilder app)        {            // 有关如何配置应用程序的详细信息,请访问   http://go.microsoft.com/fwlink/?LinkID=316888        }    }}

里面什么都没有,只帮你实现了一个空的方法,当然..这些都不重要...

 

下面我们看看改过后的代码.

 

SignalR的代码:

using System;using System.Collections.Generic;using System.Linq;using System.Web;using Microsoft.AspNet.SignalR;using Microsoft.AspNet.SignalR.Hubs;namespace SignalRTest{    //Hub的别名,方便前台调用    [HubName("getMessage")]    public class MoveTextHub : Hub    {        //自动产生的方法        public void Hello()        {            Clients.All.hello();        }        //编写发送信息的方法        public void SendMessage(string message)        {            //调用所有客户注册的本地的JS方法(broadcastMessage)            Clients.All.broadcastMessage(message + DateTime.Now.ToString());        }     }}

 

OWIN StartUp代码

using System;using System.Threading.Tasks;using Microsoft.Owin;using Owin;[assembly: OwinStartup(typeof(SignalRTest.MyStartup))]namespace SignalRTest{    public class MyStartup    {        public void Configuration(IAppBuilder app)        {            // 有关如何配置应用程序的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkID=316888            //注册管道,使用默认的虚拟地址,根目录下的"/signalr",当然你也可以自己定义            app.MapSignalR();        }    }}

至此,我们的后台代码就暂时完成了..

 

 

下面我们来看看前端的JS代码:

名称:

  • 聊天窗口

 

至此我们就完成了最基本的通过集线器消息群发.效果如下:

 

谢谢大家支持,我会坚持把这个系列写完,写的不好希望大家多多包含,请大神指导..

 

 

源码下载地址:http://pan.baidu.com/s/1qWBlRp6

 

转载地址:http://oohlo.baihongyu.com/

你可能感兴趣的文章
K盘显示文件系统变没,要怎样恢复资料
查看>>
windows常用命令整理
查看>>
使用andbug的monitor命令
查看>>
php-cgi进程占用cpu资源过大原因分析及解决
查看>>
CentOS/RedHat上安装man手册
查看>>
我的友情链接
查看>>
log4j配置
查看>>
去掉Intel集成显卡的桌面右键菜单
查看>>
我的友情链接
查看>>
MediaPlayer播放网络视频
查看>>
面试的时候你感觉受到尊重了吗?
查看>>
LNMP - nginx用户认证
查看>>
redis主从配置
查看>>
JSP操作MySQL数据库实例讲解
查看>>
JVM结构、GC工作机制详解
查看>>
SQLSERVER2005发送邮件
查看>>
Install ESXi 5.1 using USB Flash Drive
查看>>
windows server 2012R2 双网卡绑定
查看>>
【二】进一步了解D语言之学前必备
查看>>
2019福建省队集训day1T2原样输出(copy)
查看>>