一、本文出处:SignalR 实例介绍 (建议看原著里面有DEMO下载)

二、这篇文章介绍如何利用 VS2012 创建一个简单的实时聊天系统,建好后的样子如下(模拟三个在线用户):

    

三、Demo 创建

   1、新建项目以及新建完成后的目录结构如下图所示:

           

2、 安装 SignalR 程序包,该包实现了服务端与客户端的通信。

    工具----> NuGet 程序包管理器----> 程序包管理器控制台 执行命令行:install-package Microsoft.AspNet.SignalR

    

   安卓成功后的目录结构如下图所示,红色框内为新增加的文件:

    

  3、添加类用于接收客户端的信息以及广播收到的信息,该类的名字命名为: ChatHub.cs,该类继承自 Hub 类,并在该类中添加如下代码:    

    

public class ChatHub : Hub
{
public void Send(string name, string message)
{
// Call the broadcastMessage method to update clients.
Clients.All.broadcastMessage(name, message);
}
}

  4、添加启动类用于配置路由,该类的名字命名为:Startup.cs,并在该类中添加如下代码:  

    

using Microsoft.Owin;
using Owin;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; [assembly: OwinStartup(typeof(WebTM.Startup))]
namespace WebTM
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
// Any connection or hub wire up and configuration should go here
app.MapSignalR();
}
}
}

  5、添加HTML页面用于发送以及接受消息,该HTML页面的名字命名为:WebChat.Html ,代码如下:

    HTML:

 用户名:<strong><label id="displayname"></label></strong>
<div class="container">
<input type="text" id="message" />
<input type="button" id="sendmessage" value="Send" /> <ul id="discussion" style="list-style:none;">
</ul>
</div>

    样式:        

 .container {
background-color: #99CCFF;
border: thick solid #808080;
padding: 20px;
margin: 20px;
}

    脚本:

   <script src="Scripts/jquery-1.6.4.min.js"></script>
<script src="Scripts/jquery.signalR-2.2.0.min.js"></script>
<script src="Signalr/hubs"></script>
<script type="text/javascript">
$(function () {
var chat = $.connection.chatHub;
chat.client.broadcastMessage = function (name, message) {
var encodedName = $('<div />').text(name).html();
var encodedMsg = $('<div />').text(message).html();
$('#discussion').append('<li><strong>' + encodedName
+ '</strong>:&nbsp;&nbsp;' + encodedMsg + '</li>');
}; $('#displayname').text(prompt('输入您的名字:', ''));
if ($('#displayname').text() === "")
$('#displayname').text(new Date().getTime());
$('#message').focus(); $.connection.hub.start().done(function () {
$('#sendmessage').click(function () {
// Call the Send method on the hub.
chat.server.send($('#displayname').text(), $('#message').val());
// Clear text box and reset focus for next comment.
$('#message').val('').focus();
});
});
});
</script>

在 JS 脚本中,有三个需要注意的地方(上方代码加红加粗处):

  • 第一个加红加粗处的JS脚本为自动生成的脚本,千万不可忘记添加,另外名字也不可以随便更改。而且必须在 Jquery 与 Signalr 脚本之后。
  • 第二个加红加粗处是初始化连接交换类 ChatHub ,但是此处要小写。
  • 第二个加红加粗处是调用交换类的公共方法 Send,该方法名也要小写。

第一个加红加粗的JS脚本是在系统启动后,Signalr脚本调用执行 Startup 类下的配置方法而生成的。

 

另外可以在类 ChatHub 加属性如下:

这样可以在第二个加红加粗处使用:ChatHub,在第三个加红加粗处使用 Send。

6、运行该HTML页面,复制到不同标签页,模拟多个用户在线聊天。   

  

    

    

    

    

实现服务器端与客户端的实时通信 SignalR(1)的更多相关文章

  1. 实现服务器端与客户端的高频实时通信 SignalR(2)

    说明:本篇文章与上篇文章 实现服务器端与客户端的实时通信 SignalR(1) 基本代码类似,只是做了些处理 高频 的改动. 一.本文出处:SignalR 实例介绍 (建议看原著里面有DEMO下载) ...

  2. SignalR实现服务器与客户端的实时通信

    百度百科给它的定义 实现实时通信.什么是实时通信的Web呢?就是让客户端(Web页面)和服务器端可以互相通知消息及调用方法,当然这是实时操作的. WebSockets是HTML5提供的新的API,可以 ...

  3. 【转】Android Https服务器端和客户端简单实例

    转载地址:http://blog.csdn.net/gf771115/article/details/7827233 AndroidHttps服务器端和客户端简单实例 工具介绍 Eclipse3.7 ...

  4. 【知识积累】服务器端获取客户端的IP地址(当客户端调用由Axis开发的WebService)

    一.前言 由于项目中一个小的模块需要获取客户端的IP地址以保证安全调用webservice接口,项目中客户端使用C#编写,服务器端使用Java编写,服务器端与客户端采用Axis开发的WebServic ...

  5. pushlet实现服务器端向客户端推送信息

    使用Pushlet来实现服务器端向客户端推送信息 1.   实现方式: 有两种实现方式: 1.         通过配置文件来实现定时的从服务器端向客户端推送信息 2.         通过API主动 ...

  6. net remoting 服务器端订阅客户端(附源代码)

    remoting 在分布式应用中逐渐在企业级应用发展开来,最初提出分布式应用,主要目的是为了降低服务器的压力,将耗性能的处理放在另外一个程序中,然后将计算结果发送到另外一个应用中.而remoting就 ...

  7. gridview checkbox从服务器端和客户端两个方面实现全选和反选

    GridView中的checkbox的全选和反选在很多的地方都是要求实现的,所以下面就从服务器端和客户端两个方面实现了checkbox的选择,感兴趣的朋友可以了解下,希望本文对你有所帮助 GridVi ...

  8. 使用Pushlet来实现服务器端向客户端推送信息

        使用Pushlet来实现服务器端向客户端推送信息 1.   实现方式: 有两种实现方式: 1.         通过配置文件来实现定时的从服务器端向客户端推送信息 2.         通过A ...

  9. java 通过TCP\UDP 协议实现多人聊天,点对点,文件传送-----分服务器端和客户端

    java 通过TCP\UDP 协议实现多人聊天,点对点,文件传送-----分服务器端和客户端 启动界面如下图: 首先启动服务器: 客户端登陆,登陆成功后为: 默认发送是全部用户,是多人发送. 当在边列 ...

随机推荐

  1. 分享Kali Linux 2016.2第45周VMware虚拟机

    分享Kali Linux 2016.2第45周VMware虚拟机本虚拟机使用Kali Linux 2016.2第45周镜像安装而成.有兴趣的同学,可以下载使用.(1)该虚拟机支持VMware 9.10 ...

  2. JS_ECMA基本语法中的几种封装的小函数

      先来回顾一下我们的字符串: 字符串方法: str.length str.charAt(i):取字符串中的某一个; str.indexOf('e');找第一个出现的位置;找不到返回-1; str.l ...

  3. 关于最近Google无法正常访问的变通之法(已经被墙)

    对于习惯使用谷歌搜素的骚年最近可能比较蛋疼,没这方面需求的就另当别论.可能是政府限制加强的原因,有时访问谷歌在香港服务器也不大好使,不过最近发现,不通过谷歌域名而直接使用谷歌的ip来访问谷歌响应速度可 ...

  4. volicity 模板类,java操作配置文件

    import java.io.StringWriter; import java.util.HashSet; import java.util.Iterator; import java.util.M ...

  5. json日期格式问题的办法

    //json日期转换 格式(2015-01-01) <input class="easyui-datebox" name="sbdj_txtShebaoka_Lin ...

  6. sublime注释插件与javascript注释规范

    前言 代码中注释是不可少的,即使是自己写的代码,过了一段时间之后再重看,如果没有注释记录的话,可能会想不到当初是这样实现的,尤其是在业务逻辑比较复杂的项目,注释变得尤为重要.怎么优雅的写有用的注释呢? ...

  7. HTTP协议---HTTP请求中的常用请求字段和HTTP的响应状态码及响应头

    http://blog.csdn.net/qxs965266509/article/details/8082810 用于HTTP请求中的常用请求头字段 Accept:用于高速服务器,客户机支持的数据类 ...

  8. Codeforces Beta Round #7

    A题,应该是水题,我没看懂... B题,这题很多坑,注意x是LL,而且x = 0的情况,所以初始化要为-1,最后这题是内存管理啊..操作系统学的不好,题意读不懂啊. 申请内存的时候,是从头找 如果这一 ...

  9. 【BZOJ2002】 [Hnoi2010]Bounce 弹飞绵羊 分块/LCT

    Description 某天,Lostmonkey发明了一种超级弹力装置,为了在 他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装 ...

  10. tableFooterView中的按钮点击没反应

    一,经历 1.查了按钮没有响应的几个方法,排除了是用户交互设置为 NO 的情况. 2.然后打印了一下tableFooterView,尽然发现其高度为0,而且我也没有设置 frame, 却可以显示按钮, ...