在线聊天室 ASP.NET Core SignalR Net6 超简单。

在线聊天室

ASP.NET Core SignalR 是一个开放源代码库,可用于简化向应用添加实时 Web 功能。 实时 Web 功能使服务器端代码能够将内容推送到客户端。

适合 SignalR 的候选项:

需要从服务器进行高频率更新的应用。 示例包括游戏、社交网络、投票、拍卖、地图和 GPS 应用。

仪表板和监视应用。 示例包括公司仪表板、即时销售更新或旅行警报。

协作应用。 协作应用的示例包括白板应用和团队会议软件。

需要通知的应用。 社交网络、电子邮件、聊天、游戏、旅行警报和很多其他应用都需使用通知。

创建 SignalR 中心

 /// <summary>
    /// 创建SignalR中心
    /// </summary>
    public class ChatHub : Hub
    {
        private ISqlSugarClient _db;
        public ChatHub(ISqlSugarClient db)
        {
            _db = db;
        }
        /// <summary>
        /// 发送消息
        /// </summary>
        /// <param name="user">用户名</param>
        /// <param name="message">密码</param>
        /// <returns></returns>
        public async Task SendMessage(string user, string message)
        {
            DateTime time = DateTime.Now;
            //记录消息
            UserMessage userMessage = new UserMessage()
            {
                Id = Guid.NewGuid().ToString(),
                UserName = user,
                Content = message,
                CreateTime = time
            };
            _db.Insertable(userMessage).ExecuteCommand();
            await Clients.All.SendAsync("ReceiveMessage", user, message, time.ToString());
        }
    }

配置 SignalR

必须将 SignalR 服务器配置为将 SignalR 请求传递给 SignalR。

将以下突出显示的代码添加到 Program.cs 文件。

builder.Services.AddSignalR();

app.MapHub<ChatHub>("/chatHub");

添加 SignalR 客户端代码

js中连接服务


"use strict";
//连接服务
var connection = new signalR.HubConnectionBuilder().withUrl("/chatHub").build();

// 禁止发送按钮,直到建立连接
$("#sendButton").hide();

// 建立连接
connection.start().then(function () {
    // 连接成功则显示发送按钮
    $("#sendButton").show();
    console.log("连接成功!")
}).catch(function (err) {
    // 连接失败则直接返回错误消息
    return console.error(err.toString());
});

// 发送消息
$("#sendButton").click(function () {
    var user = $("#userInput").val();
    var message = $("#messageInput").text();
    connection.invoke("SendMessage", user, message).catch(function (err) {
        return console.error(err.toString());
    })
});

// 接收消息
connection.on("ReceiveMessage", function (user, message, time) {
    $("#content").append(`<p>${user} ${time}</p><p>${message}</p><br>`);
    $("#content").animate({ scrollTop: 100000 });
});

//查看聊天记录
var pageIndex = 1;
$("#findMessage").click(function () {
    $("#historyMessage").fadeIn();
    $.post("/Home/GetMessages", { pageIndex: pageIndex, pageSize: 10 }, function (data) {
        $.each(data, function (i, e) {
            $("#historyMessage").append(`<p>${e.userName} ${e.createTime}</p><p>${e.content}</p><br>`);
        });
    })
});

系统界面,简单的聊天系统,功能简单, 能更快的掌握Signalr的基本使用。

登入系统
聊天框

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值