1、概述
我们对SignalR算入门了,知道如何把SignalR合理应用到实际的项目中。前面的文章主要讲解的是SignalR的概念,托管方式,以及推送的功能。本篇主要讲解通过SignalR实现一对一、点对点的聊天。
2、SignalR一对一聊天实现
2.1、 创建ASP.NET Mvc项目
新建一个空的ASP.NET Mvc项目,取名为:SignalROneToOne,如下图所示。为了整个系列的完整性,我们直接在上一项目的基础上新增的一个测试项目,后面有项目的源码托管地址。
2.2、安装Nuget包
创建好项目后,要使用SignalR,需要先安装SignalR包,可以通过程序包管理控制台输入包安装命令进行安装。
Install-Package Microsoft.AspNet.SignalR
也可以使用界面方式,如下图所示。
2.3、一对一聊天后台代码实现
向工程中添加HubConnections目录,在其中添加OneToOneHub.cs文件,如下图所示:
实现的主要步骤:
- 重写OnConnected连接方法和OnDisconnected断开方法。
- 使用SendMessage服务器端方法发送消息,GetName获取用户名。
- 客户端响应的提示返回信息方法,如Clients.Client(Context.ConnectionId).addMessage(message)
OneToOneHub代码内容如下:
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
namespace SignalROneToOneDemo.Connections
{
/// <summary>
/// 用户实体类
/// </summary>
public class User
{
/// <summary>
/// 连接ID
/// </summary>
[Key]
public string ConnectionID { get; set; }
/// <summary>
/// 用户名称
/// </summary>
public string Name { get; set; }
public User(string name, string connectionId)
{
this.Name = name;
this.ConnectionID = con