惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
MyScale Blog
MyScale Blog
雷峰网
雷峰网
量子位
小众软件
小众软件
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 叶小钗
T
Tailwind CSS Blog
月光博客
月光博客
博客园 - 【当耐特】
博客园_首页
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
IT之家
IT之家
爱范儿
爱范儿
阮一峰的网络日志
阮一峰的网络日志
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
WordPress大学
WordPress大学
The Cloudflare Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
SegmentFault 最新的问题
人人都是产品经理
人人都是产品经理
V
V2EX
酷 壳 – CoolShell
酷 壳 – CoolShell

博客园 - uxinxin

.NET10 中配置Swagger的记录 .NET10中通过appsettings.json配置文件获取信息的几个方法 学习使用Taurus的微服务群在.NET Framework4.8环境下的搭建 B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 【八】 B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 【七】 B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 【六】 B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 【五】 B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 【四】 B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 【三】 B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 【二】 B站朝夕教育 【.NET9.0+WPF实战三类流程化业务逻辑控制】学习记录 .NET程序屏蔽一些无效蜘蛛的访问配置 asp.net 动态加载与卸载程序集的尝试(没有成功)欢迎解决的朋友留言告知 Framework 4.6.2下的SignalR使用,以及WPF下同步使用 react 16.8.4版本中的生命周期中的细节 在组件挂在时使用了定时器的处理——尚硅谷React教程(2022加更,B站超火react教程)学习笔记 CYQ.Data的XML操作的一些自己使用记录 IIS URL Rewrite将伪静态配置文件放在web.config外部 ASP.NET Core EF MVC 登录验证 一步步教你用html+div+css+js基于Jquery实现一套数字华容道游戏
.net framework 中Owin 通过启动类 Startup.cs 使用 SignalR
uxinxin · 2025-01-03 · via 博客园 - uxinxin

1. 安装 SignalR NuGet 包

在 NuGet 包管理器中,搜索 Microsoft.AspNet.SignalR 并安装它

2. 创建 SignalR Hub

SignalR 使用 Hub 来处理客户端与服务器之间的通信。你可以创建一个 SignalR Hub 类,它会处理客户端和服务器之间的实时消息传递。

  1. 在你的项目中创建一个名为 ChatHub.cs 的类。

    namespace 名称空间{
        public class ChatHub : Hub
        {
            // 向所有连接的客户端发送消息
            public void SendMessage(string user, string message)
            {
                // 向所有客户端广播消息
                Clients.All.broadcastMessage(user, message);
            }
        }
    }

3. 配置 SignalR

using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(名称空间.Startup))]
namespace 名称空间
{
    /// <summary>
    /// Startup 的摘要说明
    /// </summary>
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // 配置 SignalR 路由
            app.MapSignalR();
        }
    }
}

4.客户端链接demo

<!DOCTYPE html>
<html>
<head>
    <title>SignalR Chat</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/signalr.js/2.4.3/jquery.signalR.min.js"></script>
    <!--<script src="https://cdnjs.cloudflare.com/ajax/libs/signalr/2.4.1/jquery.signalR.min.js"></script>-->
</head>
<body>
    <div>
        <label for="user">User:</label>
        <input type="text" id="user" />
        <label for="message">Message:</label>
        <input type="text" id="message" />
        <button onclick="sendMessage()">Send</button>
    </div>

    <div id="messages"></div>

    <script type="text/javascript">
        // 创建连接
        var connection = $.hubConnection();
        var chatHub = connection.createHubProxy('chatHub');

        // 监听服务器广播的消息
        chatHub.on('broadcastMessage', function (user, message) {
            $('#messages').append('<div><strong>' + user + ':</strong> ' + message + '</div>');
        });

        // 启动连接
        connection.start().done(function () {
            console.log("SignalR connection established!");
        });

        // 发送消息到服务器
        function sendMessage() {
            var user = $('#user').val();
            var message = $('#message').val();
            chatHub.invoke('SendMessage', user, message);
        }
    </script>
</body>
</html>