一、本文出处: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. redis 的使用 ( set集合类型操作)

    set 集合类型 释义:            redis 的 set 是 string 类型的无序集合 set 元素最大可以包含(2的32次方-1)个元素 关于 set 集合类型除了基本的添加删除操 ...

  2. linux(centos6)搭建ftp服务器

    前提 ssh服务已经开启,关闭防火墙,主机和虚拟机能ping通 查看ssh和防火墙的状态 service sshd status service iptables status 开启ssh服务 ser ...

  3. The 2015 China Collegiate Programming Contest K Game Rooms hdu 5550

    Game Rooms Time Limit: 4000/4000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total ...

  4. An Unfair Game-[ACdream1035]

    Problem Description There are n people and n target, everyone should get one target, no two people g ...

  5. (转)STORM启动与部署TOPOLOGY

    STORM启动与部署TOPOLOGY 启动ZOOPKEEPER zkServer.sh start 启动NIMBUS storm nimbus & 启动SUPERVISOR storm sup ...

  6. document.forms[0].submit object is not a function

    今天在做项目的时候发现了一个问题:document.forms[0].submit object is not a function. 这个问题是在用JavaScript 代码来提交一个表单时发生的. ...

  7. BZOJ1012[JSOI2008]最大数maxnumber 题解

    题目大意: 维护一个数列,有两种操作:1. 查询当前数列中末尾L个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度.2.插入操作:将n加上t,其中t是最近一次查询操作的答案(如果还未执行 ...

  8. How to crack gbooks

    Damn cnblogs, no auto saving set by default, even worse than csdn, can't believe it, lost half an ho ...

  9. [深入浅出WP8.1(Runtime)]Toast通知

    9.1 Toast通知 Toast通知是在屏幕最顶上弹出来的临时通知,是Windows Phone通用的弹出式短暂的通知,默认的系统消息都是采用Toast通知的形式,比如当你手机收到短信的时候,在手机 ...

  10. css比较容易搞混的三个选择器

    直接后代选择器:> .grid>input[type="button"] 所有后代选择器:空格 .grid input[type="button"] ...