SignalR是利用html5 sokit方式实现网页的实时性,在客户端不支持html5的情况下通过轮询实现

实现原理是客户端发送的消息先去服务器,然后服务器根据需要将消息广播到需要接收信息的客户群。

添加对应的包 nuget:install-package Microsoft.AspNet.SignalR.nuget会帮忙处理将需要的包都添加到项目中。nuget以后会看到项目多出一些引用:Microsoft.Owin,Microsoft.AspNet.SignalR等。多出一个script文件夹,文件夹里有SignalR依赖的jquery包以及SignalR.js

到这一步准备工作就做好了。

分析一下:这个组件本身实现的是一个网页实时聊天,刚刚也说了是客户端先将消息发送到服务端,服务端处理然后再广播到需要接收消息的客户端。

这么说的话,必然会有一个接收客户端消息的服务端程序存在。这一点跟Ajax非常类似,客户端发送消息,给服务端,然后服务端返回数据更新部分页面。然而SignalR不只可以在web中使用也可在winform程序中使用(文档中有说明)。那要在web中使用SignalR就必然要告诉程序SigalR不同于一般的后台程序,它不是一个普通的dll

我用mvc空模板做的例子,在执行完Global.asax中的内容会直接执行这里边的内容。我的理解里这就是实现那所谓的接口跟SignalR扯上关系了。

---------------------这一步非常关键。不能省略,

然后加一个控制器,加个视图。  加上一个SignalR的控制中心

解释一下代码

$(function () {}文档加载完毕以后,执行以下内容:

$.connection.testhub;连接到testhub控制中心(跟实现了hub类的类名相对应,如有必要可在类前加描述[HubName("控制名称")],在客户端就应该使用:$.connection.控制名称)

$.connection.hub.logging;查看调试信息,firebug中切换到控制器就能看到每一步执行的状态。

chart.client.addNewMessageToPage = function (message) {
            $("#message").append(message + "<br/>");
        }

实现服务端定义的客户端方法接口这里对应的是sendmessage中addNewMessageToPage方法,可以传递一个参数。。

chart.client.del同上。

$.connection.hub.start().done(function () {
            chart.state.username = "test";//客户端给服务端发送需要的变量
            chart.server.joinGroup("ClientGroup");//将客户添加到组  这里可以是从数据库查询得到的数据
            $("#btnok").click(function () {
                chart.server.sendmessage($("#input").val());
            });
            $("#btndel").click(function () {
                chart.server.clearmessage();
            });
        });

这里边就是成功连接到控制中心以后需要执行的一些东西。 chart.state.username = "test";定义变量

然后就是调用下服务端的方法:chart.server.joinGroup("ClientGroup");//将本客户端添加到组ClientGroup

$("#btnok").click(function () {
                chart.server.sendmessage($("#input").val());
            });

单击事件:调用服务端方法,

服务端只做一件事情(接收客户端发送的消息),然后根据需要把消息广播(添加一个客户端方法接口,具体怎么实现实在客户端做)

客户端:实现服务端定义好的接口。然后在需要的时候给服务端发送消息..

然后补充一点:每个客户端在连接到控制中心的时候会生成一个随机的userid.所以想要实现两个用户的网页聊天,需要将两个人所有客户端的连接加到同一个组里面进行消息广播。这样就可以实现消息的同步,可以同时手机上,ipad上,以及电脑上同时实现消息的广播,具体实现提示: chart.state.username = "test";//客户端给服务端发送需要的变量。。

SignalR实现网页实时聊天功能的更多相关文章

  1. SignalR入门一、通过 SignalR 2 进行实时聊天

    一:什么是signalR Asp.net SignalR是微软为实现实时通信的一个类库.一般情况下,signalR会使用JavaScript的长轮询(long polling)的方式来实现客户端和服务 ...

  2. 网页实时聊天之PHP实现websocket

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  3. 网页实时聊天之js和jQuery实现ajax长轮询

    众所周知,HTTP协议是无状态的,所以一次的请求都是一个单独的事件,和前后都没有联系.所以我们在解决网页实时聊天时就遇到一个问题,如何保证与服务器的长时间联系,从而源源不段地获取信息. 一直以来的方式 ...

  4. [转]网页实时聊天之js和jQuery实现ajax长轮询 PHP

    网页实时聊天之js和jQuery实现ajax长轮询 众所周知,HTTP协议是无状态的,所以一次的请求都是一个单独的事件,和前后都没有联系.所以我们在解决网页实时聊天时就遇到一个问题,如何保证与服务器的 ...

  5. 网页实时聊天之PHP如何实现websocket

    网页实时聊天之PHP如何实现websocket 一.总结 一句话总结: 应用 PHP 的 socket 函数库:PHP 的 socket 函数库跟 C 语言的 socket 函数非常类似 PHP 实现 ...

  6. SignalR实时聊天功能

    使用vs2013新建一个空的asp.net 工程 添加SignalR集线器类MyHub.cs using System; using System.Collections.Generic; using ...

  7. [Asp.net 开发系列之SignalR篇]专题二:使用SignalR实现酷炫端对端聊天功能

    一.引言 在前一篇文章已经详细介绍了SignalR了,并且简单介绍它在Asp.net MVC 和WPF中的应用.在上篇博文介绍的都是群发消息的实现,然而,对于SignalR是为了实时聊天而生的,自然少 ...

  8. 微信小程序实现即时通信聊天功能的实例代码

    项目背景:小程序中实现实时聊天功能 一.服务器域名配置 配置流程 配置参考URL:https://developers.weixin.qq.com/miniprogram/dev/api/api-ne ...

  9. php websocket-网页实时聊天之PHP实现websocket(ajax长轮询和websocket都可以时间网络聊天室)

    php websocket-网页实时聊天之PHP实现websocket(ajax长轮询和websocket都可以时间网络聊天室) 一.总结 1.ajax长轮询和websocket都可以时间网络聊天室 ...

随机推荐

  1. vue.js初级入门之最基础的双向绑定操作

    首先在页面引入vue.js以及其他需要用到的或者可能要用到的插件(这里我多引用了bootstrap和jquery) 引用的时候需要注意文件的路径,准备工作这样基本就完成了,下面正式开始入门. vue. ...

  2. HTML5本地存储Localstorage

    什么是localstorage 前几天在老项目中发现有对cookie的操作觉得很奇怪,咨询下来是要缓存一些信息,以避免在URL上面传递参数,但没有考虑过cookie会带来什么问题: ① cookie大 ...

  3. iOS之UI组件整理

    作者:神兽gcc 授权本站转载. 最近把iOS里的UI组件重新整理了一遍,简单来看一下常用的组件以及它们的实现.其实现在这些组件都可以通过Storyboard很快的生成,只是要向这些组件能够变得生动起 ...

  4. android okvolley框架搭建

    最近新出了很多好东西都没时间去好好看看,现在得好好复习下了,记下笔记 记得以前用的框架是android-async-http,volley啊,或者其它的,然后后面接着又出了okhttp,retrofi ...

  5. 阶段一:为View设置阴影和弹出动画(天气应用)

    “阶段一”是指我第一次系统地学习Android开发.这主要是对我的学习过程作个记录. 上一篇阶段一:通过网络请求,获得并解析JSON数据(天气应用)完成了应用的核心功能,接下来就要对它进行优化.今天我 ...

  6. [Erlang 0129] Erlang 杂记 VI

    把之前阅读资料的时候记下的东西,整理了一下. Adding special-purpose processor support to the Erlang VM   P23 简单介绍了Erlang C ...

  7. Oracle常用函数汇总

    在Oracle OCP考试中,相当一部分知识点涉及到对于Oracle常见函数的考查.尽管Oracle官方文档SQL Language Reference中Functions一章内列举了所有Oracle ...

  8. 树莓派3B远程VNC的设置(包括开机启动)

    可以说,现在很少有自带VNCserver的教程 因为之前 官方系统没有自带VNC  但是 现在  最新版的官方系统已经自带VNCserver 只需要在设置里启用一下,然后设置就可以用啦. 别的教程都是 ...

  9. Spring MVC之@RequestMapping 详解

    (转自:http://blog.csdn.net/walkerjong/article/details/7994326) 引言: 前段时间项目中用到了RESTful模式来开发程序,但是当用POST.P ...

  10. Servlet入门笔记

    一.一个简单的Servlet 在servlet 3.0之前,下面是基本步骤: 1.新建一个class名为FirstServlet,让它继承javax.servlet.http.HttpServlet: ...