SignalR2实时聊天

NuGet包中搜索SignalR添加引用

using Microsoft.AspNet.SignalR;

创建OWIN启动类
  1. namespace SignalRChat
  2. {
  3. public class Startup
  4. {
  5. public void Configuration(IAppBuilder app)
  6. {
  7. app.MapSignalR();
  8. }
  9. }
  10. }
创建SignalR Hub类
  1. namespace SignalRChat
  2. {
  3. public class ChatHub : Hub
  4. {
  5. //创建发送消息的方法
  6. public void Send(string message)
  7. {
  8. //将消息发送给所有已连接客户端
  9. Clients.All.broadcastMessage(message);
  10. //只给当前调用的客户端发送消息
  11. Clients.Caller.broadcastMessage(message);
  12. //给当前调用的客户端以外的客户端发送消息
  13. Clients.Others.broadcastMessage(message);
  14. //将消息发送给目标客户端
  15. Clients.Client(Context.ConnectionId).broadcastMessageGo(message);
  16. Clients.AllExcept(ConnectionId1,ConnectionId2,...).broadcastMessageGo(message);
  17. //将消息发送给目标群组的客户端
  18. Clients.Group(GroupName).groupMessageGo(message);
  19. //排除指定客户
  20. Clients.Group(GroupName,ConnectionId1,ConnectionId2,...).groupMessageGo(message);
  21. //排除调用操作的客户端
  22. Clients.OthersInGroup(GroupName).groupMessageGo(message);
  23. //用户标识的指定用户
  24. Clients.User(userid).broadcastMessage(message);
  25. }
  26. //群组没有直接的创建和删除,群组和客户端的关联需要自行保存。
  27. public void Group(string GroupName)
  28. {
  29. //加入组
  30. Groups.Add(Context.ConnectionId, GroupName);
  31. //退出组
  32. Groups.Remove(Context.ConnectionId, GroupName);
  33. }
  34. public override Task OnConnected()
  35. {
  36. //创建连接时执行
  37. return base.OnConnected();
  38. }
  39. public override Task OnDisconnected(bool stopCalled)
  40. {
  41. //客户端断开时执行
  42. return base.OnDisconnected(stopCalled);
  43. }
  44. public override Task OnReconnected()
  45. {
  46. //重连时执行
  47. return base.OnReconnected();
  48. }
  49. }
  50. }
创建前端html页面
  • 页面上需要引用signalR.js和signalr/hubs
  • 创建客户端方法以供后端调用
  • 后端调用前端方法时输入对应的参数到前端接收
  • chat.client.方法名字 = function(参数){}
  1. <script src="Scripts/jquery.signalR-2.2.2.min.js"></script>
  2. <script src="signalr/hubs"></script>
  3. // 声明一个代理以引用集线器
  4. var chat = $.connection.chatHub;
  5. // 创建接收消息的方法
  6. chat.client.broadcastMessage = function (message) {
  7. $("#ShowMessage ul").append(message)
  8. };
  9. $.connection.hub.start().done(function () {
  10. //启动连接时执行
  11. });

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. 题解 Luogu P3959 【宝藏】

    来一篇不那么慢的状压??? 话说这题根本没有紫题难度吧,数据还那么水 我是不会告诉你我被hack了 一看数据规模,n≤12,果断状压. 然后起点要枚举,就设dp状态: f[i][j]=以i为起点到j状 ...

  2. 登陆并访问k8s的apiserver

    kubeadm安装的k8s集群默认需要用户登陆认证,无法直接使用命令curl访问.所以首先的第一步就是获取token. 先找到k8s集群中的dns组件coredns,之前的版本使用的是kube-dns ...

  3. Spring MVC异常处理代码完整实例

    Spring MVC异常处理流程: 提供构造方法传值: 配置异常处理器的bean

  4. CF1097G Vladislav and a Great Legend 组合、树形背包

    传送门 看到\(k\)次幂求和先用斯特林数拆幂:\(x^k = \sum\limits_{i=1}^k \binom{x}{i}\left\{ \begin{array}{cccc} k \\ i \ ...

  5. SpringBoot 常用配置 静态资源访问配置/内置tomcat虚拟文件映射路径

    Springboot 再模板引擎中引入Js等文件,出现服务器拒绝访问的错误,需要配置过滤器 静态资源访问配置 @Configuration @EnableWebMvc public class Sta ...

  6. power shell命令添加SharePoint用户组与用户(用户为域用户)

    查看SharePoint用户组 Get-PnPGroup 查看某一用户组 Get-PnPGroup -Identity "用户组名" 查看某一用户组下的所有成员 Get-PnPGr ...

  7. 使用jQuery开发tab选项卡插件(可以右键关闭多个标签)

    在前一篇“使用jQuery开发tab选项卡插件”的基础上添加了tab标签右键关闭菜单功能,菜单主要包括:关闭当前标签.关闭左侧标签.关闭右侧标签.关闭其他.关闭全部. 一.插件效果 二.实现思路 为w ...

  8. ubuntu18.04使用vscode报pylint is not install错误

    1.安装pip:sudo apt-get install pip,如果使用python3则需要安装pip3:sudo apt-get install python3-pip 2.使用pip安装pyli ...

  9. thinkPHP中session()方法用法详解

    本文实例讲述了thinkPHP中session()方法用法.分享给大家供大家参考,具体如下: 系统提供了Session管理和操作的完善支持,全部操作可以通过一个内置的session函数完成. 用法 ? ...

  10. grpc的简单用例 (golang实现)

    这个用例的逻辑很简单, 服务器运行一个管理个人信息的服务, 提供如下的四个服务: (1) 添加一个个人信息 注: 对应于Unary RPCs, 客户端发送单一消息给服务器, 服务器返回单一消息 (2) ...