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

    上一章节,我们的web即时通讯已经可以实现跨域了,但针对我们的需求,还希望,一些客户端程序可以和我们的web用户,在线聊天,所以到SignalR官网,查阅文档,当然,还有版本限制,限制都是SignalR 2.0了,我们1.几版本的能不能完美支持呢?

  看到了这些内容,感觉是不是很惊喜,全端支持

我们来看.NET Library,大概浏览一下,启动VS,新建一个WinForm程序,打开nuget,找到Client的对应版本:

 Install-Package Microsoft.AspNet.SignalR.Client -Version 1.1.2

此时,我们的项目结构如下:

我们看到,相应的引用已经添加,只有2个类库就可以轻松实现客户端通信了,有空研究一下源码,反正是开源的,这样就可以根据源码开发出对应的C++版本,以便注册用户的客户端开发了。

此时打开From1.cs的代码,添加如下:

namespace SignalRclient
{
public partial class Form1 : Form
{
HubConnection hubConnection;
IHubProxy hubProxy;
private delegate void AddTxt(string msg);
public Form1()
{
InitializeComponent();
hubConnection = new HubConnection("http://localhost:2154/signalr/hubs");
hubProxy = hubConnection.CreateHubProxy("pushHub");
hubProxy.On<string>("addMessage", (message) => this.Invoke(new AddTxt(Show), message));
hubConnection.Start().Wait();
} private void Show(string msg)
{
textBox2.Text += msg + "\r\n";
} private void btnSubmit_Click(object sender, EventArgs e)
{
hubProxy.Invoke("send", textBox1.Text).Wait();
}
}
}

代码大概解释一下,

   hubConnection = new HubConnection("http://localhost:2154/signalr/hubs"); 初始化对我们IM服务器的集线器连接,
  hubProxy = hubConnection.CreateHubProxy("pushHub");连接指定的集线器。
    hubProxy.On<string>("addMessage", (message) => this.Invoke(new AddTxt(Show), message)); 配置我们服务端定义的匿名方法,并设置委托方法,以供调用。
    hubProxy.Invoke("send", textBox1.Text).Wait(); send 是我们在服务端定义的发送方法,这里都是通过方法名调用的,有点类似js的eval了,是不是很强大。

代码很简单,也很方便的可以扩展使用,我们启动程序,看一下效果
 
已经可以收到自己发出的信息,是不是很神奇,方法名一定要对应上,不然可收不到。
我们再启动web端,和跨域端,看看是不是三端都可以通信了:
LOL,是不是很强大,现在,我们的商户已经可以和买家进行即时沟通了。后面我们可以深入扩展,并将Android和IOS的系统一起合并进来,会不会超越qq呢。
 

vs2010 使用SignalR 提高B2C商城用户体验(三)的更多相关文章

  1. vs2010 使用SignalR 提高B2C商城用户体验(二)

    vs2010 使用SignalR 提高B2C商城用户体验(二) 上一节,已经实现了,当前域内的通信,这一节中,介绍一下跨域的即时通信,既然要做,我们肯定要把这个推送及聊天服务器做为一个单独的服务器,以 ...

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

    vs2010 使用SignalR 提高B2C商城用户体验(一) 1.需求简介,做为新时代的b2c商城,没有即时通讯,怎么提供用户粘稠度,怎么增加销量,用户购物的第一习惯就是咨询,即时通讯,应运而生.这 ...

  3. 使用SignalR 提高B2C商城用户体验1

    vs2010 使用SignalR 提高B2C商城用户体验(一) 1.需求简介,做为新时代的b2c商城,没有即时通讯,怎么提供用户粘稠度,怎么增加销量,用户购物的第一习惯就是咨询,即时通讯,应运而生.这 ...

  4. php fastcgi_finish_request让你的程序由等待时间,瞬间完成,提高用户体验

    当PHP运行在FastCGI模式时,PHP FPM提供了一个名为fastcgi_finish_request的方法.按照文档上的说法,此方法可以提高请求的处理速度,如果有些处理可以在页面生成完后再进行 ...

  5. jQuery实现图片预加载提高页面加载速度和用户体验

    我们在做网站的时候经常会遇到这样的问题:一个页面有大量的图片导致页面加载速度缓慢,经常会出现一个白页用户体验很不好.那么如何解决这个问题呢?首先我们会想到的是提高服务器性能,使用静态缓存等手段来加快图 ...

  6. Qunar机票技术部就有一个全年很关键的一个指标:搜索缓存命中率,当时已经做到了>99.7%。再往后,每提高0.1%,优化难度成指数级增长了。哪怕是千分之一,也直接影响用户体验,影响每天上万张机票的销售额。 在高并发场景下,提供了保证线程安全的对象、方法。比如经典的ConcurrentHashMap,它比起HashMap,有更小粒度的锁,并发读写性能更好。线程安全的StringBuilder取代S

    Qunar机票技术部就有一个全年很关键的一个指标:搜索缓存命中率,当时已经做到了>99.7%.再往后,每提高0.1%,优化难度成指数级增长了.哪怕是千分之一,也直接影响用户体验,影响每天上万张机 ...

  7. 巧用Ajax的beforeSend 提高用户体验--防止重复数据

    巧用Ajax的beforeSend 提高用户体验 jQuery是经常使用的一个开源js框架,其中的$.ajax请求中有一个beforeSend方法,用于在向服务器发送请求前执行一些动作.具体可参考jQ ...

  8. 前端如何实现图片懒加载(lazyload) 提高用户体验

    定义 图片懒加载又称图片延时加载.惰性加载,即在用户需要使用图片的时候加载,这样可以减少请求,节省带宽,提高页面加载速度,相对的,也能减少服务器压力. 惰性加载是程序人性化的一种体现,提高用户体验,防 ...

  9. 如何提高手机APP的用户体验?

    详细内容请点击 随着移动互联网如日中天,如火如荼的时候,手机APP开发日益高涨了起来,关于手机APP的用户体验,也是一个老话长谈的话题.从事这行业也很久了,以下是我个人在工作中的一些关于APP的用户体 ...

随机推荐

  1. 硬菜点播台 | MySQL阿里实践经典案例之参数调优最佳实践

    http://mp.weixin.qq.com/s?__biz=MzA4NjI4MzM4MQ%3D%3D&mid=512708319&idx=1&sn=6af5f424d7cd ...

  2. How to create a PPPoE Server on Ubuntu? (Untested)

    How to create a PPPoE Server on Ubuntu? March 30, 2011 coder_commenter Leave a comment Go to comment ...

  3. Java基础知识强化之IO流笔记60:打印流 之 改进复制文本文件的案例

    1. 使用打印流改进复制文本文件的案例 2. 代码示例: package cn.itcast_03; import java.io.BufferedReader; import java.io.Buf ...

  4. Android(java)学习笔记141:SQLiteDatabase的query方法参数分析

    public Cursor query (boolean distinct, String table, String[] columns, String selection, String[] se ...

  5. iOS之AlertController的使用

    iOS 8的新特性之一就是让接口更有适应性.更灵活,因此许多视图控制器的实现方式发生了巨大的变化.全新的UIPresentationController 在实现视图控制器间的过渡动画效果和自适应设备尺 ...

  6. Bootstrap与tab组合,切换菜单实例

    <html><head><meta http-equiv="Content-Type" content="text/html; charse ...

  7. extjs6整合到web项目中

    最近有一个项目需要应用extjs作为前端界面,因此研究了一下如何将extjs 6引入到项目中.以下是操作步骤 extjs6下载地址 extjs 6有gpl版本的,下载地址https://www.sen ...

  8. JUnit4注解基本介绍

    @After If you allocate external resources in a Before method you need to release them after the test ...

  9. dom+bom

    一.判断最大值和最小值,注:arr为数组 最大值:Math.max.apply(null, arr); 最小值:Math.min.apply(null, arr);   二.BOM 打开新页面和关闭打 ...

  10. NET环境下的未处理异常(unhandled exception)的解决方案

    NET环境下的未处理异常(unhandled exception )的解决方案 .Net 框架提供了非常强大的异常处理机制,同时对一些非托管代码很难控制的系统问题比如指针越界,内存泄漏等提供了很好的解 ...