首页 > 其他分享 >SignalR服务端及客户端实现

SignalR服务端及客户端实现

时间:2023-04-02 23:44:09浏览次数:42  
标签:function Console string SignalR proxy public 服务端 客户端

服务器端:

引用nuget:

1、Microsoft.AspNet.SignalR.SelfHost

2、Microsoft.Owin.Cors

    internal class Program
    {
        static void Main(string[] args)
        {
            string uri = "http://localhost:8081";

            using (WebApp.Start(uri))
            {
                Console.WriteLine("Server running on {0}", uri);
                Console.ReadLine();
            }
        }
    }

    class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.UseCors(CorsOptions.AllowAll);
            
            app.MapSignalR();
        }
    }

  

Hub实现类

    public class MD5 : Hub
    {
        public void encode(string clientId, string jsonRequest)
        {
           // Clients.All.addMessage(clientId, Guid.NewGuid().ToString());


            IClientProxy proxy = Clients.Caller;
            proxy.Invoke(clientId, clientId, Guid.NewGuid().ToString());

            Console.WriteLine("id:{0} qs:{1}", Context.ConnectionId, Context.QueryString["version"]);

        }

        public override Task OnDisconnected(bool stopCalled)
        {
            Console.WriteLine("stop:{0}", Context.ConnectionId);

            return base.OnDisconnected(stopCalled);
        }

        public override Task OnConnected()
        {
            Console.WriteLine("start:{0}", Context.ConnectionId);

            return base.OnConnected();
        }
    }

  

 

客户端:

引用nuget:

1、Microsoft.AspNet.SignalR.JS

<!DOCTYPE html>
<html>
<head>
    <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>
    <script type="text/javascript">
        $(function () {
            var connection = $.hubConnection("http://localhost:8081/signalr", { useDefaultPath: false });
            connection.qs = { 'version': '1.0' };

            var _proxy = connection.createHubProxy('mD5');
            _proxy.on('signalRCallBack', function (name, message) {
                console.log(name + ' ' + message);
            });

            connection.start().done(function () {
                $('#sendmessage').click(function () {
                    _proxy.invoke('encode', 'signalRCallBack', $('#message').val());
                });
            })
                .fail(function () {
                    console.log('服务器连接失败');
                });
        });
    </script>
</body>
</html>

  

标签:function,Console,string,SignalR,proxy,public,服务端,客户端
From: https://www.cnblogs.com/briny/p/17281823.html

相关文章

  • 第三十四篇 vue - 应用规模化 - 服务端渲染 - SSR
    总览什么是SSRSSR-服务端渲染Vue.js是一个用于构建客户端应用的框架。默认情况下,Vue组件的职责是在浏览器中生成和操作DOMVue也支持将组件在服务端直接渲染成HTML字符串,作为服务端响应返回给浏览器,最后在浏览器端将静态的HTML“激活”(hydrate)为能够交互的客户端......
  • kafka(java客户端)生产者消费者不能连接虚拟机kafka
    报错如下:...:localhost:9092...java.net.ConnectException:Connectionrefused:nofurtherinformationatsun.nio.ch.SocketChannelImpl.checkConnect(NativeMethod)atsun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739)atorg.apac......
  • c++socket编程之客户端编写
    开头用WINAPI完成了socket客户端的编写cursor很适合用于写这种单文件的WINAPI代码编写,写的很规范,它帮助我完成了API的调用,参数的选择和异常值处理,自己去写还挺费时间但不得不吐槽下,我提的几个处理中文和处理多任务的需求,无论我换何种说法,它实现的都不太好,甚至还有错误功......
  • c++ socket编程之服务端编写
    开头想要写一个带界面、功能全面、传输高效、运行稳定的马儿,能够在生产环境下工作在cursor的帮助下,用一天时间完成了服务端和客户端的编写另外一天时间卡在了中文消息传输处理和大文件传输粘包、分包问题上功能收发消息,支持中文消息发送命令执行并显示命令执行结果任意......
  • 渡一教育_Java每日一练:建立Statement的作用是什么、前端Console.log( Boolean(‘‘))
    系列文章目录文章目录系列文章目录题目1java部分建立Statement的作用是什么(答案在最后公布)题目1-答案==解析====答案==题目2前端js部分==答案==题目3前端js部分如下代码输出的是什么答案和解析如下==解析==题目4如果希望1监听TCP端口为9000,服务端应该怎样创建socket题目答......
  • RocketMQ-Windows安装-客户端rocketmq-dashboard 20230331
     一、Windows安装 https://github.com/apache/rocketmq/releases 1、解压rocketmq-all-4.8.0-bin-release.zip到D:\XXXA\rocketmq-all-4.8.0 2、RocketMQ配置环境变量:ROCKETMQ_HOMED:\XXXA\rocketmq-all-4.8.0NAMESRV_ADDRlocalhost:9876 PATH属性增加:......
  • Unity客户端开发工程师的进阶之路
    UWA技能成长系统是UWA根据学员的职业发展目标,提供技能学习的推荐路径,再将所需学习内容按难易等多维度,设计分成多个学习阶段,可以循序渐进地进行学习。每个阶段学员完成学习任务后不但可以获得技能的提升,还将获得UWA社区相应的积分奖励(积分可兑换礼品和优惠券哦)。 进入技能成长......
  • c# mqtt高性能服务器端源代码 开源框架包括服务器和客户端,支持mqtt3.0及5.0
    c#mqtt高性能服务器端源代码。你还在使用第三方服务软件吗?不如试试这个开发框架,助你一臂之力,无限制,无全开源,无版权约束,全是自主开发。开源框架包括服务器和客户端,支持mqtt3.0及5.0。可嵌入到自己的服务系统及软件客户端中,不受第三方约束。你要问我稳定性如何?我能回答的是已经......
  • 客户端日志和异常处理
    目录一.使用Serilog结构化日志记录日志信息二.捕获全局异常三.使用AOP统一处理异常一.使用Serilog结构化日志记录日志信息Serilog包的引用和使用语法都可以在网上找到(https://github.com/serilog/serilog/wiki/),不再赘述,这里仅分享一下自己在项目中的简单使用。FileLogHelpe......
  • 查看redis客户端连接IP
    腾讯云监控redis连接IP只有实时IP连接监控情况,直接使用redis-cliclientlist也只能看到当时的连接情况,没有时间戳可以参考,所以对此命令进行加工,增加时间戳并输出到文件中,......