标签: signalr-hub

SignalR 2 长轮询“协议”请求在本地未运行时超时

目前我有一个非常健谈的应用程序,需要单例支持(见下面的代码)。我升级到 SignalR 2.0 并遵循了升级指南,但是在将其部署到环境中后,有时对每个“协议”的所有请求都会失败,并且信号器中断,当它没有中断时,推送速度非常慢从服务器到客户端的通知,也许这与使用长轮询有关?这是我的服务器端代码的样子。

Owin启动类中的配置方法

 var hubConfig = new HubConfiguration();
 hubConfig.EnableDetailedErrors = true;
 GlobalHost.DependencyResolver.UseSqlServer(ConfigurationManager.AppSettings["ConnectionString"].ToString());
 app.MapSignalR(hubConfig);
Run Code Online (Sandbox Code Playgroud)

如您所见,我使用的是 SQL 背板。这是我的集线器的样子

public class MyHub : Hub
{
    public void JoinGroup(int someId)
    {
        Groups.Add(Context.ConnectionId, someId.ToString());
    }

    public void LeaveGroup(int someId)
    {
        Groups.Remove(Context.ConnectionId, someId.ToString());
    }
}
Run Code Online (Sandbox Code Playgroud)

这里要说明的另一点是我正在使用组。这可能是问题的一部分,我注意到组似乎使事情变得更慢,好像信号器在推送通知后正在等待组中的所有用户完成。我的单身人士看起来像这样。

public class Broadcaster
    {
        private readonly static Lazy<Broadcaster> _instance =
            new Lazy<Broadcaster>(() => new Broadcaster(GlobalHost.ConnectionManager.GetHubContext<MyHub>().Clients));
        private IHubConnectionContext _context;
        private Broadcaster(IHubConnectionContext context)
        {
            _context = context;
        }
        public static Broadcaster Instance
        {
            get { return _instance.Value; }
        }
        public …
Run Code Online (Sandbox Code Playgroud)

c# signalr signalr-hub signalr.client

4
推荐指数
1
解决办法
8295
查看次数

在 SignalR Hub 上使用泛型方法

我正在为我的 SignalR 服务器创建一个集线器类,并希望使用一种通用方法来避免大量代码行。但是,当我尝试从同样在 C# 中的 Xamarin.iOS 客户端调用下面的服务器代码时,SignalR 给了我错误。

服务器代码

public List<T> SendDataToClient<T>() where T : BusinessEntityBase
{
   return SomeDBManager.GetItems<T>();
}
Run Code Online (Sandbox Code Playgroud)

客户代码

var list = await hubProxy.Invoke<List<Article>>("SendDataToClient");
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么还是在 SignalR 集线器中使用泛型方法是不可能的?

c# generics signalr signalr-hub signalr.client

4
推荐指数
1
解决办法
2688
查看次数

SignalR WebApp.Start(url) 不喜欢文件夹中的其他 exe?

当其他 exe 位于同一文件夹中时,我的 WebApp.Start 方法会引发 System.IO.FileLoadException。我不知道为什么会发生这种情况,这让我发疯。任何帮助表示赞赏。

//Calling webapp.start
string url = "http://*:8080/";
SignalRServer = WebApp.Start(url);


//My Owin Startup Class
class Startup
{
    public void Configuration(IAppBuilder app)
    {            
        // Branch the pipeline here for requests that start with "/signalr"
        app.Map("/signalr", map =>
        {               
            map.UseCors(CorsOptions.AllowAll);
            var hubConfiguration = new HubConfiguration
            {                    
                EnableJSONP = false,                   
                EnableDetailedErrors = true,
                EnableJavaScriptProxies = true
            };                              
            map.RunSignalR(hubConfiguration);
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

这一直很好,直到我将服务投入生产部署测试,现在它出现以下错误。

System.IO.FileLoadException: Could not load file or assembly 'AutoServiceController, Version=1.0.5270.19403, Culture=neutral, PublicKeyToken=null' or one of its dependencies. …

.net c# signalr signalr-hub owin

4
推荐指数
1
解决办法
2252
查看次数

从ASP.NET WebAPI 2中的标头和/或查询字符串中检索承载标记

背景:

我有一个ASP.NET WebAPI项目.我正在使用Bearer Tokens来验证我的用户.我的一些控制器操作标有[Authorized]过滤器.在客户端,客户端通过调用http://foo.bar/Token然后将该令牌添加Authorization为其请求的标头来获取其令牌.

到目前为止没有问题,并且我的Startup.Auth.cs课程中的所有设置都应该正常工作:

OAuthOptions = new OAuthAuthorizationServerOptions
{
    TokenEndpointPath = new PathString("/Token"),
    Provider = new ApplicationOAuthProvider(PublicClientId),
    AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
    AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
    // In production mode set AllowInsecureHttp = false
    AllowInsecureHttp = true                
};

// Enable the application to use bearer tokens to authenticate users
app.UseOAuthBearerTokens(OAuthOptions);
Run Code Online (Sandbox Code Playgroud)

现在我已经为我的项目添加了一些SignalR Hubs,我也想在集线器中验证用户身份.还有一些其他问题涉及客户端如何向SignalR连接添加承载令牌.摘要:

我试过的:

所以我创建了这个类来从查询字符串中检索我的访问令牌. …

signalr asp.net-web-api signalr-hub asp.net-identity

4
推荐指数
1
解决办法
3632
查看次数

使用带有 C# 的 signalR 每秒向客户端发送消息

我想向所有连接的客户端发送某种计时器到服务器。我可以通过单击按钮来执行此操作。但我真正需要的是每秒自动发送这个计时器。

HTML

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Signalr Chat Messenger</title>
    <script src="Scripts/jquery-1.6.4.min.js" type="text/javascript"></script>
    <script src="Scripts/jquery.signalR-1.0.0-rc1.js" type="text/javascript"></script>
    <script src="signalr/hubs" type="text/javascript"></script>
</head>
<body>
    <form id="form1" runat="server">

    <script type="text/javascript">
        $(function () {

            var IWannaChat = $.connection.myChatHub;

            IWannaChat.client.addMessage = function (message) {
                $('#listMessages').append('<li>' + message  + '</li>');
            };

            IWannaChat.client.addTest = function (timer) {
                $('#lblTimer').text(timer);
            };

            $("#SendMessage").click(function () {
                IWannaChat.server.send($('#txtMessage').val());
            });

            $.connection.hub.start();

        });
    </script>

    <div>
        <input type="text" id="txtMessage" />
        <input type="button" id="SendMessage" value="broadcast" /><asp:Label ID="lblTimer" runat="server" Text="timer"></asp:Label>
&nbsp;<ul id="listMessages">
        </ul>
    </div>
    </form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这是我的HUB …

c# asp.net signalr signalr-hub

4
推荐指数
1
解决办法
4856
查看次数

尝试协商时出现 SignalR 404 错误

所以我对 SignalR 很陌生,事实上我现在只使用了几天。无论如何,当我的应用程序首次启动时,我收到以下错误:

SignalR 协商错误

相关应用程序的代码位于两个项目中,一个 Web API 和一个单页应用程序 (SPA)。第一个是我的后端代码 (C#),第二个是我的客户端代码 (AngularJS)。我认为问题可能是由于相关项目在不同的端口上运行。我的 SignalR 集线器所在的 Web API 位于端口 60161 上,SPA 位于 60813 上。我的集线器声明如下:

public class ReportHub : Hub
{
    public void SendReportProgress(IList<ReportProgress> reportProgress)
    {                
        this.Clients.All.broadcastReportProgress(reportProgress);
    }

    public override Task OnConnected()
    {
        this.Clients.All.newConnection();

        return base.OnConnected();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在我的 Web API 的 Startup.cs 文件中,我像这样初始化 SignalR:

public void Configuration(IAppBuilder app)
{           
    HttpConfiguration config = new HttpConfiguration();
    config.Services.Replace(typeof(IHttpControllerActivator), new NinjectFactory());
    config.MessageHandlers.Add(new MessageHandler());

    //set up OAuth and Cors
    this.ConfigureOAuth(app);
    config.EnableCors();
    config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;

    // Setting up SignalR
    app.Map("/signalr", …
Run Code Online (Sandbox Code Playgroud)

c# asp.net signalr angularjs signalr-hub

4
推荐指数
1
解决办法
3974
查看次数

$.hubConnection 不是函数(…)

我的 SignalR 项目遇到了问题。我创建了一个控制台来运行 SignalR,然后尝试在我的网站上使用它(目前都以 localhost 模式运行)

信号自主机

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

namespace SignalRSelfHost
{
    class Program
    {
        static void Main(string[] args)
        {
            // This will *ONLY* bind to localhost, if you want to bind to all addresses
            // use http://*:8080 to bind to all addresses. 
            // See http://msdn.microsoft.com/en-us/library/system.net.httplistener.aspx 
            // for more information.
            string url = "http://localhost:8080";
            using (WebApp.Start(url))
            {
                Console.WriteLine("Server running on {0}", url);
                Console.ReadLine();
            }
        }
    }
    class Startup
    {
        public …
Run Code Online (Sandbox Code Playgroud)

signalr signalr-hub

4
推荐指数
1
解决办法
1万
查看次数

何时在 signalR 中使用多个集线器?

我正在使用信号 R 开发聊天应用程序。

我想知道什么时候在信号 r 中使用多个集线器,有什么好处,使用多个集线器还是使用单个集线器是好方法?

signalr signalr-hub signalr-2

4
推荐指数
2
解决办法
3282
查看次数

Signalr 是否更改 connectionId OnReconnected 方法?

我想知道信号器是否更改了 OnReconnected 方法上的 connectionId?因为我正在将用户列表映射到他们的连接 ID,所以如果由于连接缓慢而在服务器上引发了重新连接的事件,例如 connectionId 会改变吗?

signalr signalr-hub signalr.client

4
推荐指数
1
解决办法
3232
查看次数

Angular:无法在 SignalR HubConnection 中传递 API url

我在 Angular6 中开发了一个项目。需要为实时聊天开发部分。为此,我在我的 asp.net 核心 Web Apiproject 中使用 SignalR。现在我想在我的 Angular 项目中使用这个 Web Api 参考。

我正在使用链接。

但是在 App.Component.ts 中提供 Web Api url 时,我收到以下错误:

“HubConnection”类的构造函数是私有的,只能在类声明中访问。

应用组件.ts:

import { HubConnection } from '@aspnet/signalr';
import { Message } from 'primeng/api';

export class AppComponent implements OnInit {
  public _hubConnection: HubConnection;
  msgs: Message[] = [];
  constructor() {   
  }
  ngOnInit() {
    this._hubConnection = new HubConnection('http://localhost:1874/notify'); // getting error on this line.
Run Code Online (Sandbox Code Playgroud)

编辑:尝试以下代码:-

修改后的 App.Component.ts :

import { HubConnection } from '@aspnet/signalr';
import * as …
Run Code Online (Sandbox Code Playgroud)

signalr signalr-hub angular6 angular-cli-v6

4
推荐指数
1
解决办法
3195
查看次数