SignalR2实时聊天

NuGet包中搜索SignalR添加引用

using Microsoft.AspNet.SignalR;

创建OWIN启动类
namespace SignalRChat
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}
创建SignalR Hub类
namespace SignalRChat
{
public class ChatHub : Hub
{
//创建发送消息的方法
public void Send(string message)
{
//将消息发送给所有已连接客户端
Clients.All.broadcastMessage(message);
//只给当前调用的客户端发送消息
Clients.Caller.broadcastMessage(message);
//给当前调用的客户端以外的客户端发送消息
Clients.Others.broadcastMessage(message);
//将消息发送给目标客户端
Clients.Client(Context.ConnectionId).broadcastMessageGo(message);
Clients.AllExcept(ConnectionId1,ConnectionId2,...).broadcastMessageGo(message);
//将消息发送给目标群组的客户端
Clients.Group(GroupName).groupMessageGo(message);
//排除指定客户
Clients.Group(GroupName,ConnectionId1,ConnectionId2,...).groupMessageGo(message);
//排除调用操作的客户端
Clients.OthersInGroup(GroupName).groupMessageGo(message);
//用户标识的指定用户
Clients.User(userid).broadcastMessage(message);
}
//群组没有直接的创建和删除,群组和客户端的关联需要自行保存。
public void Group(string GroupName)
{
//加入组
Groups.Add(Context.ConnectionId, GroupName);
//退出组
Groups.Remove(Context.ConnectionId, GroupName);
}
public override Task OnConnected()
{
//创建连接时执行
return base.OnConnected();
}
public override Task OnDisconnected(bool stopCalled)
{
//客户端断开时执行
return base.OnDisconnected(stopCalled);
}
public override Task OnReconnected()
{
//重连时执行
return base.OnReconnected();
}
}
}
创建前端html页面
  • 页面上需要引用signalR.js和signalr/hubs
  • 创建客户端方法以供后端调用
  • 后端调用前端方法时输入对应的参数到前端接收
  • chat.client.方法名字 = function(参数){}
<script src="Scripts/jquery.signalR-2.2.2.min.js"></script>
<script src="signalr/hubs"></script> // 声明一个代理以引用集线器
var chat = $.connection.chatHub; // 创建接收消息的方法
chat.client.broadcastMessage = function (message) {
$("#ShowMessage ul").append(message)
};
$.connection.hub.start().done(function () {
//启动连接时执行
});

SignalR2实时聊天的更多相关文章

  1. MVC5中使用SignalR2.0实现实时聊天室

    原文 MVC5中使用SignalR2.0实现实时聊天室 有时候需要浏览器和服务端保持实时的通讯(比如在线聊天),SignalR的出现让这一切变得非常简单.它能够让服务端向客户端实时的推送消息.如果用户 ...

  2. 使用SignalR+Asp.net创建实时聊天应用程序

    一.概述: 使用 ASP.NET 那么 SignalR 2 创建一个实时聊天应用程序.将 SignalR 添加 MVC 5 应用程序中,并创建聊天视图发送并显示消息. 在Demo中,将学习Signal ...

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

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

  4. SignalR实现网页实时聊天功能

    SignalR是利用html5 sokit方式实现网页的实时性,在客户端不支持html5的情况下通过轮询实现 实现原理是客户端发送的消息先去服务器,然后服务器根据需要将消息广播到需要接收信息的客户群. ...

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

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

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

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

  7. 基于swoole的网页一对一实时聊天

    需求分析 网站上实现一对一即时沟通,能查看聊天记录以及离线留言,新消息提醒. 核心技术 html5的websocket,php的swoole扩展http://wiki.swoole.com/ 数据表 ...

  8. 我的学习笔记之node----node.js+socket.io实时聊天(1) (谨此纪念博客开篇)

    本想着从hello word开篇,也确实写了相关学习笔记.各种原因吧,现在又着急写出作品,便作罢. 这里将记录一个node.js+socket.io的实时聊天程序.(当然我也是跟着网上各种教程资料学习 ...

  9. Node+Express+MongoDB + Socket.io搭建实时聊天应用

    Node+Express+MongoDB + Socket.io搭建实时聊天应用 前言 本来开始写博客的时候只是想写一下关于MongoDB的使用总结的,后来觉得还不如干脆写一个node项目实战教程实战 ...

随机推荐

  1. win10+aconda+pytorch

    1.需要建立项目的运行环境,每个项目应用的框架不用,所以对于每个项目分别用运行环境不会造成管理上的混乱以及应用上的冲突 2.建立项目运行环境: a.用管理员身份运行anconda prompt 创建c ...

  2. SpringCloudConfig相关配置简介、使用、整合Eureka

    目的: 1.SpringCloud Config简介 2.Config Server基本使用 3.Config Client基本使用 4.Config整合Eureka 5.Config配置搜索路径 S ...

  3. Centos7部署开源聊天软件rocket.chat

    一.部署rocket.chat 1.看官方文档部署,很简单,一步一步跟着部署即可 注意:需要部署节点需要联网主要是yum方式 https://rocket.chat/docs/installation ...

  4. C#获取汉字拼音和首字母

    C#获取汉字拼音和首字母 引入NPinyin using NPinyin; 调用 /// <summary> /// 中文首字母大写 /// </summary> /// &l ...

  5. python day10: 反射补充,面向对象

    目录 pythdon day 10 1. 反射补充 16. 面向对象 16.1 面向对象初步介绍 16.2 面向对象和面向过程区别 16.3 对象的进化 17. 类class 17.1 类的定义 17 ...

  6. H5打开app指定页面(H5+app项目)

    H5+app项目,在HBuilderX中设置 详情参考官方 https://ask.dcloud.net.cn/article/64 给h5+app设置scheme值,作用:在其它app和h5页面中启 ...

  7. e.preventDefault()与e.stopPropagation()的区别

    e.stopPropagation()阻止事件冒泡<table border='1'> <tr> <td><span>冒泡事件测试</span&g ...

  8. C++之同名覆盖、多态

    一.同名覆盖引发的问题 父子间的赋值兼容--子类对象可以当作父类对象使用(兼容性) 1.子类对象可以直接赋值给父类对象 2.子类对象可以直接初始化父类对象 3.父类指针可以指向子类对象 4.父类引用可 ...

  9. Mysql 存储过程 + python调用存储过程 (内置函数讲解及定义摘抄)

    定义 存储过程:就是为以后的使用而保存的一条或多条 MySQL语句的集合.可将其视为批文件,虽然它们的作用不仅限于批处理. 个人使用存储过程的原因就是因为 存储过程比使用单独的SQL语句要快 有如下表 ...

  10. RobotFramework+Eclipse的安装和配置(一)

    最近想学robotframwork来做自动化,那立马就来开始上手 想动手,起码要先下载工具,工具及框架 工具介绍 Robotframework:一款自动化测试框架. Eclipse:一款编辑工具,可以 ...