signalr 控制台做服务端

2023-11-09

服务端

一、新建控制台应用程序(.net framework 4.8)
SignalRSelfHost
二、引入NuGet包

install-package Microsoft.AspNet.SignalR.Core
install-package Microsoft.AspNet.SignalR.SelfHost
install-package Microsoft.Owin
install-package Microsoft.Owin.Cors

三、编写服务端程序

using Microsoft.AspNet.SignalR;
using Microsoft.Owin.Cors;
using Microsoft.Owin.Hosting;
using Owin;
using System;

namespace SignalRSelfHost
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //signalr server地址,端口可以更换,确保不被占用,否则起不来
            string url = "http://localhost:8080";
            //启动web应用
            using (WebApp.Start(url))
            {
                Console.WriteLine("Server running on {0}",url);
                Console.ReadLine();
            }
        }
    }
    /// <summary>
    /// 配置跨域请求、SignalR Server
    /// </summary>
    class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.UseCors(CorsOptions.AllowAll);
            app.MapSignalR();
        }
    }

    /// <summary>
    /// 发送给所有Client广播信息
    /// </summary>
    public class MyHub : Hub
    {
        /// <summary>
        /// 被客户端
        /// </summary>
        /// <param name="name"></param>
        /// <param name="message"></param>
        public void Send(string name,string message)
        {
            Clients.All.addMessage(name,message);
        }
    }
}

客户端

四、新建一个Web应用

引入NuGet包:Microsoft.AspNet.SignalR.JS

设置 Default.html 为启动页面

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>SignalR Simple Chat</title>
    <style type="text/css">
        .container{
            background-color:#99CCFF;
            border:thick solid #808080;
            padding:20px;
            margin:20px;
        }
    </style>
</head>
<body>
    <div class="container">
        <input type="text" id="message" />
        <input type="button" id="sendmessage" value="Send" />
        <input type="hidden" id="displayname"/>
        <ul id="discussion"></ul>
    </div>
    <script src="Scripts/jquery-1.6.4.min.js"></script>
    <script src="Scripts/jquery.signalR-2.4.3.min.js"></script>
    <!-- 引用自动生成的SignalR hub 脚本 -->
    <script src="http://localhost:8080/signalr/hubs"></script>
    <script type="text/javascript">
        $(function () {
            // hub url
            $.connection.hub.url = "http://localhost:8080/signalr";
            // hub代理类
            var chat = $.connection.myHub;
            //定义一个方法,hub可以调用该方法发送广播消息
            chat.client.addMessage = function (name, message) {
                var encodeName = $('<div />').text(name).html();
                var encodeMsg =  $('<div />').text(message).html();
                $('#discussion').append('<li><strong>' + encodeName
                    + '</strong>:&nbsp;&nbsp;' + encodeMsg + '</li>');
            };
            //获取用户名,加入消息
            $('#displayname').val(prompt('Enter your name:', ''));
            //消息输入框获取焦点
            $('#message').focus();
            //启动连接
            $.connection.hub.start().done(function () {
                $('#sendmessage').click(function () {
                    chat.server.send($('#displayname').val(), $('#message').val());
                    $('#message').val('').focus();
                });
            });
        });
    </script>
</body>
</html>

示例程序结构
五、应用效果演示
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

signalr 控制台做服务端 的相关文章

  • X11 模式对话框

    如何使用 Xlib 在 X11 中创建模式对话框 模态对话框是一个位于应用程序其他窗口之上的窗口 就像瞬态窗口一样 并且拒绝将焦点给予应用程序的其他窗口 在 Windows 中 当试图从模态窗口夺取焦点时 模态也会通过闪 烁模态窗口的标题栏
  • Linq - 从表达式 创建表达式

    我有一个谓词Expression
  • 为什么我会收到未找到分析器的警告?

    我创建了一个玩具项目来检查最新的 NET 7 预览版 5 和正则表达式代码生成 它效果很好 所以我对现有项目应用了相同的更改 不是为了生产 而是为了个人生产力 由于某种原因 我收到这些警告 CS8032 An instance of ana
  • Caliburn.Micro - ShowDialog() 如何关闭对话框?

    EDIT 新信息 刚刚设法让记录器工作 老实说 我不知道 cm 有一个 并且在尝试使用时收到此消息TryClose TryClose requires a parent IConductor or a view with a Close m
  • STL之类的容器typedef快捷方式?

    STL 容器的常见模式是这样的 map
  • 平滑手绘曲线

    我有一个允许用户绘制曲线的程序 但这些曲线看起来不太好 它们看起来摇摇欲坠 而且是手绘的 所以我想要一种能够自动平滑它们的算法 我知道平滑过程中存在固有的模糊性 因此它不会每次都完美 但这种算法似乎确实存在于多个绘图包中 并且它们工作得很好
  • ContentDialog 未与 UWP 中心对齐

    据我所知 ContentDialog的默认行为应该是使其在 PC 上居中并在移动设备上与顶部对齐 但就我而言 即使在 PC 上我也将其与顶部对齐 但我不明白发生了什么 我正在使用代码隐藏来创建它 这是我正在使用的代码片段 Creates t
  • 对作为函数参数传递的指针使用删除

    删除作为函数参数传递的指针是否可以 并且合法 如下所示 include
  • 在c#中获取没有时间的日期

    我的表上有一列 缺勤日期时间 日期 当我想要获取包含日期的行时 它返回 0 行 这是我的 C 代码 DateTime ClassDate DateTime Parse lblDate Content ToString var Abs dbs
  • 如何将STL容器数据转储到gdb中?

    我无法在 gdb 中转储 STL 无序映射容器值 变量类型是 std unordered map var 我的 gdb 版本 7 7 1 GDB配置 configure host x86 64 linux gnu target x86 64
  • 在 C# 中使用命名空间别名有什么好处? [复制]

    这个问题在这里已经有答案了 使用命名空间别名有什么好处 仅仅是为了简化编码吗 仅当与类发生冲突时我才使用名称空间别名 对我来说 这根本没有简化 我的意见是 如果没有必要 就不要使用
  • 传递数组时在 C 中的函数参数中强制指定数组大小

    Context 在 C 中 我有一个以数组作为参数的函数 该参数用作该函数的输出 输出的大小始终相同 我会 让阅读代码的人清楚所需的大小 不过它已经在函数注释中了 理想情况下 编译会输出警告或错误 这样我就可以在编译时而不是运行时防止出现问
  • valgrind 在 Raspberry Pi 上返回未处理的指令

    我最近一直在尝试在运行 Debian GNU Linux7 0 喘息 的树莓派 型号 b 上使用 valgrind 来调试分段错误 每次我在编译的 C 程序上运行 valgrind 时 都会得到类似以下内容的信息 disInstr arm
  • Gremlin.net 文本包含等效项

    我正在使用 Gremlin net 库连接到 janus 图形服务器 我使用 cassandra 和弹性搜索进行数据存储和索引 在我使用的 gremlin 语言和 gremlin 控制台中文本包含在属性的文本中进行搜索 我正在使用混合索引
  • C 变量声明的效率 [重复]

    这个问题在这里已经有答案了 例如 在 C 中声明一个变量需要多长时间int x or unsigned long long var 我想知道它是否会让我的代码在类似的事情中更快 for conditions int var 0 code 这
  • “1个未解决的外部”C++

    我已经检查了所有文件之间的连接以及类和函数定义 但每次我尝试运行我的程序时 它都会阻止我并告诉我它有 1 个未解析的外部 该程序应该打开多个文件 一个 学生 文件和一个 成绩 文件 从中读取数据 然后使用 查询文件 来查找数据 找到查询中要
  • Xcode 7 调试器不会中断内联标头函数

    过去五年我一直在各种 C 项目中使用 Xcode 没有出现这个问题 今天 我打开了一个较旧的项目 大约 2 年前 并尝试通过在该函数中放置一个活动断点来调试头文件中的内联函数 由于某种原因 调试器不会中断此代码 但是 如果我在调用该函数的
  • 当我的进程被终止时到底会发生什么?

    我有一个包含本机代码和托管代码的混合进程 在 Windows Server 2003 上运行 当我从进程资源管理器中终止进程时 它会进入 100 cpu 的状态 并在消失之前保持这种状态一段时间 有时甚至 10 分钟 在此期间我无法 杀死
  • 为什么在构造函数中设置字段是(或不是)线程安全的?

    假设您有一个像这样的简单类 class MyClass private readonly int a private int b public MyClass int a int b this a a this b b public int
  • 如何在 C 中创建最低有效位设置为 1 的掩码

    这个功能如何运作 最低有效 n 位设置为 1 的掩码 Example n 6 gt 0x2F n 17 gt 0x1FFFF 我根本不明白这些 尤其是 n 6 gt 0x2F 另外 什么是面膜 通常的方法是采取1 并将其左移n位 这会给你类

随机推荐

  • 《Stable Diffusion web UI-Segment Anything未完待续01》

    最近每天晚上都在弄手指修复 但是都不理想 索性放在后面再写教程 今天中午花时间弄了一下Segment Anything 1 下载Segment Anything 点击拓展 从网址安装 安装 已安装 点击重启 2 点击这个项目红色框里面的 h
  • 【机器学习实战】8、预测数值型数据:回归

    文章目录 8 1 用线性回归找到最佳拟合直线 8 1 1 线性回归 8 1 2数据可视化 8 1 3 求回归系数向量 并根据系数绘制回归曲线 8 2 局部加权线性回归 LWLR 8 3 预测鲍鱼年龄 8 4 岭回归 8 5 前向逐步回归 8
  • linux 模拟postman进行post提交

    curl H Content Type application json charset utf 8 H Data Type msg X POST data mobile 13366088888 name 哈哈 http 192 168 1
  • 使用Jtest 2022.2简化严格的Java测试

    阅读本文 您可以了解您的开发团队如何利用Parasoft Jtest 2022 2 中包含的先进功能和增强功能来简化 Java 测试 如果开发人员没有自动化测试流程 Java和JUnit测试对他们来说可能是耗时且具有挑战性的 随着Paras
  • 使用Python将TXT转为Excel

    第一步 我们创建一个txt文件 内容为图中所示 第二步 开始写代码 导入openpyxl用于excel操作 from openpyxl import Workbook 新建保存结果的excel sheet wb Workbook r res
  • 二、大数据实践项目——数据分析与处理

    一 数据处理主要任务 二 数据集处理 1 查看数据集基本情况 调用 info 函数来查看数据data的基本情况 包括数据维度 字段名称和类型以及有无缺失值 数据占用内存等 以下为部分字段信息 可见总的数据47447行 少于此数值的为有数据缺
  • 矩阵的1/2次方

    矩阵的1 2次方 求矩阵的1 2次方的前提是A为正定阵 这时A一定相似于主对角元素都为正数的对角阵 也就是说存在可逆阵P 使得 P 1 AP dia 1 2 n 是对角阵 取B Pdiag 1 2 n P 1 则B 2 A 即B A 1 2
  • 分析如何用万能表测试MOS管好坏的小窍门

    现在家电 照明 汽车电子等领域行业开关管均采用性能优异的MOS管取代过去的大功率晶体三极管 使整体的效率 可靠性 故障率均大幅的下降 虽说是大幅降低 但也会出现损坏的情况 由于MOS管和大功率晶体三极管在结构 特性有着本质上的区别 在应用上
  • Java堆内存是线程共享的吗

    转载声明 Java堆内存是线程共享的 面试官 你确定吗 Java作为一种面向对象的 跨平台语言 其对象 内存等一直是比较难的知识点 所以 即使是一个Java的初学者 也一定或多或少的对JVM有一些了解 可以说 关于JVM的相关知识 基本是每
  • 堆叠注入原理解析

    文章目录 一 堆叠注入原理 二 堆叠注入触发条件 三 题目 一 堆叠注入原理 mysql数据库sql语句的默认结束符是以 结尾 在执行多条SQL语句时就要使用结束符隔开 那么在 结束一条sql语句后继续构造下一条语句 是否会一起执行 因此这
  • Shell脚本调试技巧

    脚本调试的主要工作就是发现引发脚本错误的原因以及脚本源代码中定位错误行 归纳汇总了SHELL脚本的总总方法 供大家学习参考 方式一 通过echo方式 功能 最简单的调试方法 可以在任何怀疑出错的地方用echo打印变量 场合 所有怀疑可能有问
  • 华硕PRIME Z390-P主板设置开启虚拟化技术

    没开虚拟化技术virtual box只能创建32位的系统 开启之后才能创建windows 7 64位系统 参考文章 https shiyousan com post 636245851547291596 https jingyan baid
  • Vue中下载不同文件的几种方式

    当在Vue中需要实现文件下载功能时 我们可以有多种方式来完成 下面将介绍五种常用的方法 1 使用window open方法下载文件
  • 【BZOJ3309】DZY Loves Math

    3309 DZY Loves Math Time Limit 20 Sec Memory Limit 512 MB Submit 411 Solved 161 Submit Status Discuss Description 对于正整数n
  • python面试题_50道Python面试题集锦(附答案)

    Python是目前编程领域最受欢迎的语言 在本文中 我将总结Python面试中最常见的50个问题 每道题都提供参考答案 希望能够帮助你在2019年求职面试中脱颖而出 找到一份高薪工作 这些面试题涉及Python基础知识 Python编程 数
  • Java 导入excel 两个sheet

    import java io File import java io FileInputStream import java io IOException import org apache poi ss usermodel Cell im
  • nexus仓库有jar但是maven 拉取不到jar问题解决

    eclipse在工程上右键 maven gt select maven profile 然后选择profile就好了 方式二 直接使用命令行拉取 mvn f pom xml dependency copy dependencies
  • mac显示文件路径

    在 Mac 上 可以使用 显示文件路径 功能来查看文件的路径 这个功能可以让你看到文件所在文件夹的完整路径 以及文件名 要查看文件路径 你可以在 Finder 中打开文件所在的文件夹 然后按下 Command Shift G 键 输入文件名
  • CCP协议学习

    一 CCP协议基础知识 a CCP CAN Calibration Protocol 中文名为CAN标定协议 是基于CAN总线的一种应用层协议 b CCP可以读取RAM PORTS ROM FLASH 写RAM PORTS FLASH c
  • signalr 控制台做服务端

    服务端 一 新建控制台应用程序 net framework 4 8 SignalRSelfHost 二 引入NuGet包 install package Microsoft AspNet SignalR Core install packa