博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用SignalR 提高B2C商城用户体验1
阅读量:7049 次
发布时间:2019-06-28

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

vs2010 使用SignalR 提高B2C商城用户体验(一)

1、需求简介,做为新时代的b2c商城,没有即时通讯,怎么提供用户粘稠度,怎么增加销量,用户购物的第一习惯就是咨询,即时通讯,应运而生。这里使用SignalR来实现即时通讯,再好不过了,不过项目依然简历在2010的基础上,所以不能使用新版本的SignalR了,这里介绍一下1.0.0版本的。

2、整个框架大概是这样搭建的,欢迎拍砖:

  

3、启动VS2010,新建一个项目,这里我建立的是asp.net mvc4

 

然后通过nuget引入SignalR所需要的组件  

     Install-Package Microsoft.AspNet.SignalR -Version 1.0.1

关于nuget怎么使用就不过多介绍了,回车后,所需要的组件基本已经引入项目中了,下面进入开发。

(1)先介绍推送服务器开发:

  在项目下,新加一个文件夹SignalR,

  然后建立我们的集线器,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
using 
System;
using 
System.Collections.Generic;
using 
System.Linq;
using 
System.Threading.Tasks;
using 
System.Web;
using 
Microsoft.AspNet.SignalR;
using 
Microsoft.AspNet.SignalR.Hubs;
using 
Owin;
 
namespace 
SignalRTest.SignalR
{
    
[HubName(
"pushHub"
)]
    
public 
class 
PushHub : Hub
    
{
        
public 
void 
Send(
string 
message)
        
{
            
Clients.All.addMessage(message);
        
}
 
        
public 
void 
Bind(
string 
userKey)
        
{
             
        
}
 
        
public 
override 
Task OnConnected()
        
{
            
var 
id = Context.ConnectionId;
            
var 
c = Clients.Caller;
            
return 
base
.OnConnected();
        
}
 
    
}
}

  Send方法,主要用来向客户端广播消息,Bind我本意是做登录校验,然后绑定客户端,OnConnected当客户端发起连接后会出发,里面的成员可以用一个字典进行管理。

  然后进入Global.asax,配置一下路由,我这里的配置是适用于跨域的,后面会介绍到。

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using 
System;
using 
System.Collections.Generic;
using 
System.Linq;
using 
System.Web;
using 
System.Web.Http;
using 
System.Web.Mvc;
using 
System.Web.Routing;
using 
Microsoft.AspNet.SignalR;
using 
Owin;
 
namespace 
SignalRTest
{
    
// Note: For instructions on enabling IIS6 or IIS7 classic mode,
    
// visit
    
public 
class 
MvcApplication : System.Web.HttpApplication
    
{
        
protected 
void 
Application_Start()
        
{
            
var 
config =
new 
HubConfiguration();
            
config.EnableCrossDomain =
true
;
            
RouteTable.Routes.MapHubs(config);
            
AreaRegistration.RegisterAllAreas();
 
            
WebApiConfig.Register(GlobalConfiguration.Configuration);
            
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            
RouteConfig.RegisterRoutes(RouteTable.Routes);
             
        
}
 
        
    
}
}

  

(2)web页面开发:

先创建母版页,请注意js的顺序,json2.js主要是用于支持ie7及以下版本的。

1 @{ 2     Layout = null; 3 } 4  5  6  7     
8 singalr 9 10 11 12 13 14 15
16 @RenderBody()17
18 19

然后创建主页,我是在homecontroller里面创建的index,这里就不过多介绍了:

1 @{ 2     Layout = "~/views/shared/_layout.cshtml"; 3 } 4 42 

43 Hub Chat

44
45
46
47
48
49
50

51 消息记录: (你是:ny):52

53
    54
55

此时,启动我们的项目

已经可以进行广播了,开启多个客户端看一下效果

是不是感觉很不错。此时,只是当前系统的,并不能做到与其他系统互通有无,那我们加个web方法,提供给其他服务器进行推送调用:

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.Mvc; 6 using Microsoft.AspNet.SignalR; 7 using Microsoft.AspNet.SignalR.Hubs; 8 using SignalRTest.SignalR; 9 10 namespace SignalRTest.Controllers11 {12     public class HomeController : Controller13     {14         //15         // GET: /Home/16         /// 17         /// 用户界面18         /// 19         /// 
20 public ActionResult Index()21 {22 return View();23 }24 25 /// 26 /// web接口,推送消息27 /// 28 /// 29 ///
30 public string Send(string msg)31 {32 var context = GlobalHost.ConnectionManager.GetHubContext
();33 context.Clients.All.addMessage(msg);34 return "ok";35 }36 37 }38 }

这时我们来调用一下看看:

这样,我们就可以给客服人员做一个页面,让他们来给指定用户,或者全站用户广播消息了,是不是感觉很棒。

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

你可能感兴趣的文章
物联网与互联网,云计算,大数据的互联结合产生超凡的应用
查看>>
【阿里招聘】那年,差点被阿里面试官掰弯
查看>>
C# 调用存储过程
查看>>
MySQL 5.7.6: Make InnoDB fill factor settable
查看>>
Android--短信拦截及IP拨号
查看>>
Aspectj 实现Method条件运行
查看>>
DevOps与阿里云容器服务(一)
查看>>
标准MD5加密工具类
查看>>
因果图在运维工作中的应用
查看>>
阿里巴巴运营专家陈哲:阿里无线开放生态
查看>>
线程的优先级
查看>>
AM335x(TQ335x)学习笔记——WM8960声卡驱动移植
查看>>
从EXCHANGE 2010的DAG中删除其中一个MEMBER
查看>>
Ehcache学习笔记
查看>>
Tomcat 内存溢出对应解决方式
查看>>
Mac下 Thinkphp3.2 语言包问题
查看>>
你意想不到的的编程问题
查看>>
Web Service学习总结
查看>>
新手学JAVA(七)----Override VS Overload
查看>>
执行 Maven 编译的 jar,找不到相关的 依赖的类--使用 maven-assembly-plugin 解决
查看>>