我做了什么: vs 2022 + .net6.0带有Windows Authentication 的Blazor Server应用程序模板 添加一个简单的集线器 在Windows Server 2019 + IIS 10 上托管应用程序 ( btw在Windows2012R2 + IIS8.5 上托管时,所有人都在工作 有效的工作: 全部在我本地的II Express上...当然:) Blazor Server应用程序页面 只要客户端是testconsole应用程序或另一台服务器上的另一个Web应用程序,该集线器就可以使用 什么是不工作: hubConnectionBuilder thiond In to Ins to It the Blazor App本身 我还打开一个( Github上的问题),但我希望我得到这里有更多提示. 我尝试的最新一件事是创建一个新的Blazor Server应用,而无需Windows身份验证,以确保我的"
以下是关于 signalr.client 的编程技术问答
我已经写了一个小的回声服务器(.NET 4.5),控制台客户端(.NET 4.5)和Web客户端,并使用Signalr和示例呈现在这里. 服务器托管在IIS8/Win8中.然后,我在Win7上运行了两个客户.而且我看到Chrome中的Web客户端使用Websocket,而Console App Client则使用ServerenTevents.如果我在Win8上运行控制台客户端,则使用WebSockets Transport. signalr .NET客户端仅在Win8和更高的上使用Websocket是的确吗? 解决方案 这是正确的:.NET客户端仅在Win8及更高版本上使用WebSocket. 其他解决方案 对于一个项目,我必须将真实的Websocket连接与SignalR结合使用. 对于不支持WebSockets的Windows版本,您可以使用 sigralr iclienttransport. using System; using Syst
我正在使用SignalR2.2 Web应用程序,并在IIS-8中托管.在这里,我尝试使用ARR3.0来实现应用程序的负载平衡.在我的服务器农场中,我连接了两台服务器,并将路由规则设置为"加权循环罗宾".每个服务器都有一个带有HTML页面的JavaScript客户端.当我访问任何服务器的HTML页面时 WebSocket connection to 'ws://mydomain.com/signalr/connect?transport=webSockets&clientProtocol=1.5&connectionToken=x9rAfatyMm3TbqzrYKL1K37Z4tKrUTH7bwNmSItW55Z0ms6pe43YiQGFOmaHMyT%2BpmGz62ukt4tha72vPcJhdqLtIvsQvqvY15oYGv69JjzSuuiSL7v2l%2FccZT6tQa3Z&connectionData=%5B%7B%22name%22%3A%22chathub%22%
我正在研究一个项目,以同步前端进行异步过程,以使网络呼叫显示为同步,并正在探索使用Signalr将其全部绑在一起的使用. 我们托管了一个具有异步的WCF端点的服务,并且适用于大多数客户.他们向我们发送了数据,我们将其处理,在处理数据后,他们没有得到响应.我们的环境是多层的,并且设计为异步. 但是,有必要托管同步前端,在我们的服务上通过我们的环境完成数据后,我们的服务可以接收响应. 我们需要允许客户打开与我们的WCF服务的连接,传输数据并等待响应.这个想法是让WCF服务为客户端及其数据创建唯一的标识符,然后将这些数据移交给异步环境以进行处理.同时,WCF服务将打开与中央集线器的连接,并等待响应,以表明特定数据已完成处理.然后,集线器将响应具有状态的WCF服务,WCF服务将响应原始客户端. 我为此目的探索Signalr的主要原因是: 我喜欢Signalr使用的连接技术协议.它是轻量级的,可以根据各种条件使用几种不同的技术. 它可以很好地管理和区分客户端连接,从
我目前正在从事的信号项目问题.我正在尝试使用.NET Core构建服务器,并尝试使用传统.NET(Framework 4.6.1)构建服务器.但是,服务器和客户端似乎不兼容. 我遇到的最后一个问题是状态代码:405,推理:"不允许的方法".我在 github上找到了一个答案. P> 查看可用的Nuget软件包版本,我更加困惑.对于.NET Core Server,我使用的是1.0.0-preview1-Final.还有一个1.0.0-alpha2-Final,但是如果" alpha"比"预览"更早,我不知道. . 在我使用的2.2.2版的客户端,并且有各种版本可供选择,我尝试了最古老和最新的版本,但是这两个版本都给了我相同的"方法不允许"错误. 错误在客户端,在服务器端,我的断点甚至没有命中,因此也可能是OWIN/IIS问题. 是否有任何图表可以映射SignalR客户端和服务器版本的兼容性?我想那将是前进的伟大一步. 解决方案 您无法将.NET Cor
我是Signalr的新手.我使用SignalR Core在Unity和SignalR之间建立连接,但我的代码根本不会返回我任何内容.那让我想知道我的代码是否实际上是否有效. 我建立了连接后,Unity将等待服务器端调用功能,然后执行需要执行的操作. 这是我的代码: using System.Collections; using System.Collections.Generic; using UnityEngine; using Microsoft.AspNetCore.SignalR.Client; public class tyrNewSignalR : MonoBehaviour { void Start() { var connection = new HubConnectionBuilder() .WithUrl("http://api-dev-vrcafe.azurewebsites.
+我使用此解决方案使用ASP.NET Web API 2,OWIN和身份...实现基于令牌的身份验证,它们效果很好.我使用了此其他解决方案,这是通过连接字符串通过连接字符串来实现Signalr Hubs授权和身份验证,但似乎持票人令牌不在,或者在某个地方有其他问题,这就是为什么在这里寻求帮助...这些是我的代码... querystringbearerauthorizeattribute:这是负责验证的类 using ImpAuth.Entities; using Microsoft.AspNet.Identity.EntityFramework; using Microsoft.Owin.Security; using Microsoft.Owin.Security.OAuth; using System; using System.Collections.Generic; using System.Linq; using System.Security.Claims; usin
我发现了关于如何使Signalr和Rx播放的小宝石: RX和反应性教程 但是,由于您可能已经注意到这仅在从服务器 - > client时起作用.有人知道如何相反吗?我希望我的框架像nservicebus和更少的RPC一样是更多的"消息"(SignalR标准示例往往是). 原因是弱打字的世界对RPC并不是很好.在服务器端,我很想能够在客户端调用周围放置接口,但是我不能,因为客户端甚至可能都不是合同和接口的概念. 因此,我希望将所有内容转变为基于消息,而经纪人则通过反应性的SOA服务在中间.希望反应性和DTO将是我的代码中唯一的依赖项. 那么有人知道如何实现这一目标吗? 解决方案 很高兴您发现这篇文章很有价值.这只是如何推向浏览器客户端的一个示例,但是SignalR将与任何数量的终点合作,包括使用OWIN的Windows服务.实际上,SignalR的扩展解决方案已经与Azure Service Bus集成在一起,因此您的想法并不遥远.您可能需要检查 Cl
我正在使用SignalR开发.NET核心的应用程序.用户将订阅系统.我需要知道的是:是否必须登录用户才能接收通知?我希望在不必每次登录的情况下推动通知.它必须类似于仅"到达"的WhatsApp消息.这是Signalr吗? 的可能性 解决方案 每个活动浏览器选项卡是与SignalR( client )的一个连接,具有唯一的ConnectionId.根据通知的使用情况,不必登录访问者.在初始化JavaScript代码时,建立了与SignalR Hub的连接. . 您可以简单地调用(呼叫)每个服务器中的JavaScript函数,以获取每个 client (访问者).因此,所有访问者都会收到通知: await Clients.All.SendAsync("ReceiveNotification", "Your notification message"); 所有连接的客户端将从服务器接收此"事件".在JavaScript中为ReceiveNotification事件编写一
我有一个5.3.0版本的Signalr自托管版本,该版本正在升级到较新版本的SignalR. 使用 https://github.com/signalr/signalr/signalr/wiki/wiki/wiki/selfs-host-host/a >示例我创建了一个简单的示例,但是我无法正常工作. 我可以在服务器上的集线器上连接并在集线器上调用方法,但是我无法拨打HUB来拨打JavaScript客户端. 在提琴手中查看它时,我再也看不到轮毂回来了. 这是代码 using System; using Microsoft.AspNet.SignalR; using Microsoft.Owin.Hosting; using Owin; namespace ConsoleApplication3 { class Program { static void Main(string[] args) { string url = "h
我使用SignalR-2.2.1从客户端到服务器的请求.该请求后,服务器将结果将结果发送回呼叫者. 这是我的JavaScript代码: $(document).ready(function () { var myHub = $.connection.signalHub; myHub.client.receive = function (tmp) { var obj = $.parseJSON(tmp); //do something }; $.connection.hub.start().done(function () { $('#xxxxx').click(function () { var form = $("form"); form.submit(); myHub.server.sendSomething();
在我当前的项目中,我想构建消息传递系统,但在子域中.假设有buyer.xyz.com和seller.xyz.com,买方和卖方可以互相发送消息,并且没有用户角色,买方和卖方来自Dififfent Tables.当买家发送消息时,消息将插入消息表中,如果他当前在线,则应更新指定的卖方,反之亦然.我是Signalr的新手.如果可能的话,请给出代码示例. 解决方案 基本上,最佳入门方法是官方文档: http://http://wwwwwwwwwwwwwwwww . 您应该在项目中添加Microsoft.Owin.Cors库.然后,在您的启动类中,您修改了仅在以下内容中具有app.MapSignalR()的方法. (请注意,代码直接来自SignalR文档 - 您还可以指定将接受连接的域/子域). app.Map("/signalr", map => { // Setup the CORS middleware to run
我在一个单独的域上托管了我的SignalR Hub,并通过我的主要应用程序与跨域连接到集线器.当用户登录到主应用程序时,建立了SignalR连接.现在,我遇到的问题是如何识别集线器中的连接用户. 如果我的集线器位于主应用程序中,那么我可以使用context.used登录用户的用户并维护字典并在连接和断开事件上更新它们. 但是作为跨域连接,我没有上下文.用户,我无法知道该连接ID属于谁.我在这里迷路了. 我在这里缺少什么? 解决方案 您应该自己保持用户的凭据和连接ID.您应该定义List或类似的东西.然后覆盖onConnected和onDisconnected方法.客户必须像Lars所说的那样发送Querystring以连接到您的枢纽. 例如,客户像这样发送给您 $.connection.hub.qs = { 'token' : 'id' }; 在集线器类中: public class ChatHub : Hu
我正在使用Signalr客户端Java进行Android应用程序. 以下是我目前正在尝试的代码: conn = new HubConnection("http://example.com/"); hubProxy = conn.createHubProxy("android"); hubProxy.on("request", new SubscriptionHandler() { @Override public void run() { testFunction(); } }); conn.start().done(new Action() { @Override public void run(Void obj) throws Exception { hubProxy.invoke("init"); } }); 以下测试并验证为工作: 连接肯定已经开始,连接成功.我可以使用
我已经成功地在.NET网站上为我的新闻通讯发送功能开发了一个枢纽. 服务器过程由集线器调用,然后在发送例程期间,我发送客户端方法以报告进度状态,最后是另一种客户方法来报告例程的结束. 我的开发环境是Win10,IIS 10,VS2013,.NET 4.5 Signalr 2.2.0. 我可以在开发人员中使用WebSocket并正常工作,但是我的生产服务器是Win 2008R2(IIS 7.5),因此我必须使用ServerSentEvents,在Dev上也工作. 在这里我的客户端代码: $.connection.hub.logging = true; hubConn = $.connection.newsletterHub; hubConn.client.addProgress = function (perc, label) { UpdateProgress(perc, label) } hubConn.client.raiseError = function
这东西让我发疯. 我有一个.NET 4.0控制台应用程序,并且我有一个MVC Web应用程序. JavaScript客户端可以连接并与服务器交谈 - 这里没有问题... 但是我的.NET客户端抛出system.AggregateException with InnereXception ="遇到意外字符时遇到了解析值: 因此,我创建了一个空的MVC3应用程序,添加了Signalr库,并且.NET客户端令人惊讶地连接到了.但是由于某种原因,它不是另一个.我已经检查了所有内容,两个MVC3应用程序,都使用相同的Signalr libs,相同的newtonsoftjson ...我认为这一定是路由的东西,我想没有-JS客户端工作. var connection = new HubConnection("http://localhost:58746"); var hubProxy = connection.CreateProxy("myProxy"); connecti
i在类上有信号hubclass 当我在我的WebApplication中使用该HubClass时,引用该类库的JavaScript代码不起作用, $(function () { var chat = $.connection.notificationHub; chat.client.newMessage = function (message) { alert(message); $('#messages').append('' + message + ':
'); }; $.connection.hub.start(); }); 解决方案 您需要一个事件来在集线器类中触发您的方法.请参见下文示例: 类库中的NotificationHub public class NotificationHub : Hub { public v
我在dotnet core 2.0中实现了一个SignalR服务器,以下是服务器的代码 startup.cs public void ConfigureServices(IServiceCollection services) { services.AddMvc(); services.AddSignalR (); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseMvc(); app.UseSignalR (routes => { r
我正在使用SignalR将命令从客户端传输到服务器,而无需刷新页面.当客户端输入我的一些网页时,我将启动新的集线器连接.这样: var hub = $.connection.siteControllerHub; $.connection.hub.start(); 此" start()"功能需要一些时间(+-5秒).同名,该页面已经完成加载,用户开始使用我的UI.在完成连接之前,Singalr无法为用户服务. 我知道我可以使用done()寄存器使用异步方法: $.connection.siteControllerHub.start().done(function () { // On finish loading... }); 但是,这种操作不适合我,因为如果我使用此操作 - 我需要禁用UI,直到此事件发生为止.而且这一点都不酷. 我更喜欢页面的加载需要更长的时间,但是完成后,一切都可以使用. 您怎么看?您如何建议实施它? 谢谢. 解决方