本系列主要开发客服聊天系统的总结。

基于.Net Core2.2 +SignalR+Layui实现的人对人聊天功能

SignalR简介

SignalR是一个.Net Core/.Net Framework的开源框架,实现了客户端和服务器端实时通讯。封装了WebSocket,ForeverFrame,ServerSentEvents,LongPolling四种主要的传输协议,让浏览器自行选择兼容的版本,解决了webSocket兼容性问题。

 
页面效果:
PC端:前端样式采用的Layui,后端用的.net Core 2.2框架。主要功能包括:聊天客户列表,一对一聊天(文字/图片),新消息提醒,聊天记录保存等功能。

移动App:基于Vue和Vant组件库,主要功能包括客服列表,聊天列表,在线聊天功能

1.使用模板新建一个.net core2.2的web项目

2.建立一个SignalrHubs,继承于Hub。
Hub基于永久连接之上更高层的封装,允许客户端和服务器端自定义方法并相互调用

 public class SignalrHubs : Hub
{
private readonly IRepository<Frame_User> _repository;
//构造器
public SignalrHubs(IRepository<Frame_User> repository )
{
_repository = repository; }
//给客服发送消息
public async Task TalkToCaller(string callerid, string clienterid, string message)
{
//保存聊天记录
AddChatHistory(callerid, clienterid, message, false);
//给对应客服发送消息
await Clients.User(callerid).SendAsync("ReceiveMessage", callerid, clienterid, message, "NickName",DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
}

3.配置SignalR

在Startup中注册SignalR

 //ConfigureServices
services.AddSignalR(huboptions =>
{
//显示服务器错误的详细信息
huboptions.EnableDetailedErrors = true;
//间隔时长 1分钟
//huboptions.KeepAliveInterval = TimeSpan.FromMinutes(1);
});
//Configure
app.UseSignalR(routes =>
{
routes.MapHub<SignalrHubs>("/api/SignalrHubs"); });

4.建立连接,发送和接收消息

 <script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/SingnlR/signalr.js"></script>
<script type="text/javascript">
var hostUrl = "http://localhost:3090";
const connection = new signalR.HubConnectionBuilder().withUrl(
hostUrl+"/api/SignalrHubs?userid="+userid).build();
$(function () { //建立连接
connection.start().catch(err => console.error(err.toString()));
//接收客户消息
connection.on("ReceiveMessage", (callerid, clientid, message,clientname,sendtime) => {
//提示音播放
playSound();
//更新用户信息
var picurl=UpdateUser(clientid);
//更新左侧客户最新聊天记录
UpClientTopContent(clientid, message, clientname, sendtime, picurl);
//更新右侧聊天明细
AppendContent(clientid, message,0);
});
//发送消息
$(".FaSong").click(function () {
if (chooseuserid == "") {
layer.msg('请选择客户!');
return;
}
var text = $(".text").val();
if (text == "") {
layer.msg('请输入消息!');
return;
}
//更新右侧聊天明细
AddContentChat(chooseuserid, text);
}); });
</script>

.Net Core SignalR+LayUi(1)-简单入门的更多相关文章

  1. SignalR 2.1 简单入门项目

    概述 SignalR是通讯框架,前台Web页面与后台服务实现数据的交互.ASP.NET SignalR 是一个为 ASP.NET 开发人员的库,简化了将实时 web 功能添加到应用程序的过程.实时We ...

  2. C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序

    C#中缓存的使用   缓存的概念及优缺点在这里就不多做介绍,主要介绍一下使用的方法. 1.在ASP.NET中页面缓存的使用方法简单,只需要在aspx页的顶部加上一句声明即可:  <%@ Outp ...

  3. .NET Core 学习资料精选:入门

    开源跨平台的.NET Core,还没上车的赶紧的,来不及解释了-- 本系列文章,主要分享一些.NET Core比较优秀的社区资料和微软官方资料.我进行了知识点归类,让大家可以更清晰的学习.NET Co ...

  4. 在.Net Core中使用MongoDB的入门教程(一)

    首先,我们在MongoDB的官方文档中看到,MongoDb的2.4以上的For .Net的驱动是支持.Net Core 2.0的. 所以,在我们安装好了MangoDB后,就可以开始MangoDB的.N ...

  5. .net core使用Ku.Core.Extensions.Layui实现layui表单渲染

    演示网站地址:http://layui.kulend.com/项目地址:https://github.com/kulend/Ku.Core.Extensions/tree/master/Ku.Core ...

  6. ASP.NET Core SignalR中的流式传输

    什么是流式传输? 流式传输是这一种以稳定持续流的形式传输数据的技术. 流式传输的使用场景 有些场景中,服务器返回的数据量较大,等待时间较长,客户端不得不等待服务器返回所有数据后,再进行相应的操作.这时 ...

  7. Asp.Net Core SignalR 用泛型Hub优雅的调用前端方法及传参

    继续学习 最近一直在使用Asp.Net Core SignalR(下面成SignalR Core)为小程序提供websocket支持,前端时间也发了一个学习笔记,在使用过程中稍微看了下它的源码,不得不 ...

  8. Net Core SignalR 测试,可以用于unity、Layair、白鹭引擎、大数据分析平台等高可用消息实时通信器。

    SignalR介绍 SignalR介绍来源于微软文档,不过多解释.https://docs.microsoft.com/zh-cn/aspnet/core/signalr/introduction?v ...

  9. LayIM.AspNetCore Middleware 开发日记(七)Asp.Net.Core.SignalR闪亮登场

    前言   前几篇介绍了整个中间件的构成,路由,基本配置等等.基本上没有涉及到通讯部分.不过已经实现了融云的通讯功能,由于是第三方的就不在单独去写.正好.NET Core SignalR已经出来好久了, ...

随机推荐

  1. python: isdigit int float 使用

    >>> num1 = '2.0' >>> print num1.isdigit() False >>> num2 = ' >>> ...

  2. Java常见集合的默认大小及扩容机制

    在面试后台开发的过程中,集合是面试的热话题,不仅要知道各集合的区别用法,还要知道集合的扩容机制,今天我们就来谈下ArrayList 和 HashMap的默认大小以及扩容机制. 在 Java 7 中,查 ...

  3. [原创]浅谈对任务分解法WBS应用

    [原创]浅谈对任务分解法WBS应用 1.WBS是什么? 即Work Breakdown Structure如何进行WBS分解:目标→任务→工作→活动 2.WBS分解的原则:将主体目标逐步细化分解,最底 ...

  4. spring以及json,fastjson和jackson

    (一) @RestController 以及 @RequestBody spring的这两个注解都需要使用对应的 message-converters 实现 pojo到字符串的转换, 需要配置实现了  ...

  5. VS Code中python代码自动格式化 代码自动检查

    VS Code菜单栏中依次打开 File—Preferences—Settings,搜索框中搜索“python.formatting.provider”, 然后在下拉菜单中选择autopep8,yap ...

  6. hg19基因组 | 功能区域 | 位置提取

    如何获取hg19的CDS.UTR.intergenic.intron等的位置信息? 参考手册: Hg19 regions for Intergenic, Promoters, Enhancer, Ex ...

  7. Linux环境下安装python3

    1.安装前准备 CentOS 7 中默认安装了 Python,版本:2.7.5,由于很多基本的命令.软件包都依赖旧版本,比如:yum.所以,在更新 Python 时,建议不要删除旧版本,而且新旧版本可 ...

  8. php curl 转为 x-www-form-urlencoded 方式

    curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); fr ...

  9. jquery ajax Uncaught TypeError :Illegal invocation 报错

    使用jquery ajax异步提交的时候报Uncaught TypeError :Illegal invocation错误,报错如图: 基本上,导致这个错误的原因一般有以下两点: 1.请求类型有误,如 ...

  10. windows 安装 Composer 报错

    错误信息如下: 解决方法: 在 extension = php_snmp.dll 前加上 ";" 然后重启 php 即可安装