标签: signalr-hub

使用signalR将数组传递给服务器

如何使用SignalR将javascript中的字符串数组传递给服务器?

我在javascript中有一个数组,并希望将此功能发送到Hub

var selected = new Array();
$('#checkboxes input:checked').each(function () {
    selected.push($("input").attr('name'));
});
Run Code Online (Sandbox Code Playgroud)

该功能应该采用什么类型的参数?

javascript jquery signalr signalr-hub

6
推荐指数
1
解决办法
5279
查看次数

SignalR .Net Client - 解析值时遇到意外的字符

我正在尝试建立一个.Net客户端,从我的服务层向我的signalR集线器发送消息.我正在关注本指南:http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-net-client#callserver

这就是我所拥有的:

        _hubConnection = new HubConnection(_baseUrl); // "http://localhost:3806"
        _hubProxy = _hubConnection.CreateHubProxy("AppHub");
        _hubConnection.Start().Wait();
Run Code Online (Sandbox Code Playgroud)

该集线器位于同一个项目中 - 它是一个带有表单身份验证的MVC应用程序.

我永远无法通过.Wait()调用,它总是出错以下内容:

Message=Unexpected character encountered while parsing value: <. Path '', line 0, position 0.
       Source=Newtonsoft.Json
Run Code Online (Sandbox Code Playgroud)

更多痕迹:

在Microsoft.AspNet.SignalR.Client.Transports.TransportHelper.b_中的Newtonsoft.Json.JsonConvert.DeserializeObject [T](字符串值).在Microsoft.AspNet.SignalR.TaskAsyncHelper上的字符串原始字符串.<> c _DisplayClass19 2.<Then>b__17(Task1 t)在Microsoft.AspNet.SignalR.TaskAsyncHelper.TaskRunners 2.<>c__DisplayClass3a.<RunTask>b__39(Task1 t)

我有AppHub:

public class AppHub : Hub {
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

signalr signalr-hub

6
推荐指数
1
解决办法
4455
查看次数

更改signalR上的查询字符串

是否可以在不执行停止和启动的情况下更改SignalR连接上的查询字符串?

我这样做:

$.connection.hub['qs'] = {arg1: 'kkkk', arg2: 'xxx',...};
$.connection.hub.stop();
$.connection.hub.start();
Run Code Online (Sandbox Code Playgroud)

这种停止/启动导致我的系统将其解释为连接中断,出于多种原因这是不可取的.

当我删除它时,使用较旧的查询字符串参数调用方法.

signalr signalr-hub

6
推荐指数
1
解决办法
2279
查看次数

如何判断我的SignalR Backplane(Redis)是否真的正常工作?

我目前正在玩SignalR 2.0.3,使用Backslane扩展,使用Redis for windows http://msopentech.com/blog/2013/04/22/redis-on-windows-stable-and-reliable/

我已经在VS中集成了相应的SignalR.Redis包.

我对我的创业做了以下更改:

   GlobalHost.DependencyResolver.UseRedis(
        server: "localhost",
        port: 6379,
        password: string.Empty,
        eventKey: "BroadcasterExample"
        );
    app.MapSignalR(hubConfiguration);
Run Code Online (Sandbox Code Playgroud)

它建立得很好.我的客户端似乎连接正常.我可以在客户端和服务器之间发送通知,反之亦然.

从Redis客户端,我可以输入:

get BroadcasterExample
which returns: "3"
Run Code Online (Sandbox Code Playgroud)

我认为事情正在发挥作用,但......

几个问题: 1)我怎么知道它实际上有效?

2)我可以在Redis服务器上检查什么(虽然是Redis客户端)?

3)什么是存储在什么数据结构(键/值对,列表,散列,集)?

我想深入了解一下发生了什么.我查看了以下命令:http: //redis.io/commands 没有什么是跳出来的,这将帮助我映射真实情况.

有人能指出我在正确的方向吗?

谢谢,JohnB

redis signalr-hub signalr-backplane

6
推荐指数
1
解决办法
2043
查看次数

您可以连接到位于不同主机/服务器上的集线器吗?

假设我在www.website.com上有一个网站.我的带信号器的SaaS托管在www.signalr.com上.

我可以从www.website.com连接到www.signalr.com信号服务器吗?

代替 :

var connection = $.hubConnection();
var contosoChatHubProxy = connection.createHubProxy('contosoChatHub');
Run Code Online (Sandbox Code Playgroud)

就像是 :

var connection = $.hubConnection();
var contosoChatHubProxy = connection.createHubProxy('www.signalr.com/contosoChatHub');
Run Code Online (Sandbox Code Playgroud)

signalr signalr-hub

6
推荐指数
1
解决办法
4121
查看次数

所有连接到集线器卡住/冻结.Websockets重新连接显示404

我们正面临类似的问题,如https://github.com/SignalR/SignalR/issues/3353

当我们启动我们的应用程序时,一段时间后连接到集线器的所有用户开始重新连接问题.

在Chrome控制台中,所有用户都会看到这种情况:

jquery.signalR.min.js WebSocket连接到'wss:// [我们的站点url]/signalr/reconnect?transport = webSocke ... HcDfA%3D%3D&connectionData =%5B%7B%22name%22%3A%22myhub%22% 7D%5D&tid = 10'失败:WebSocket握手期间出错:意外响应代码:404

所有用户都处于重新连接模式,即此方法将持续为所有用户触发:

connection.hub.stateChanged(function (change) {
                if (change.newState === $.connection.connectionState.reconnecting) {
                    failPendingMessages();
                    ui.showStatus(1, '');
                }
                else if (change.newState === $.connection.connectionState.connected) {
                    if (!initial) {
                        ui.showStatus(0, $.connection.hub.transport.name);
                        ui.setReadOnly(false);
                    } else {
                        ui.initializeConnectionStatus($.connection.hub.transport.name);
                    }

                    initial = false;
                }
                else if (change.newState === $.connection.connectionState.disconnected && initial === true) {
                    initial = false;
                }
            });
Run Code Online (Sandbox Code Playgroud)

我们正在使用Jabbr源代码中的代码.

状态正在从连接>重新连接>双向连接>连接

似乎有很多连接后,所有与Hub的连接仍然卡住,即无法正确地与集线器通信,因此连接断开,我们收到"WebSocket握手:意外响应代码:404",我上面提到过.

请注意,此行为/问题没有固定的时间.有时它会在"应用程序启动"的几分钟内开始,有时需要大约20-30分钟.

这个问题肯定是因为许多连接通过Hub同时与Signalr核心代码进行通信.

它有什么问题吗?

编辑:我们使用的是最新版本的Signalr,即Microsoft.AspNet.SignalR.Core.dll(2.2.0)

asp.net signalr signalr-hub

6
推荐指数
0
解决办法
340
查看次数

如何仅使用websockets将Java客户端连接到SignalR Hub?

我需要从我的Java桌面应用程序访问与SignalR Hub一起运行的websocket服务器.

  • 一个图书馆正是这样做的,但它已经死了.有很多问题和拉取请求,自2015年以来尚未更新.
  • 我还找到了另一个库,但据我所知,它只适用于Android项目.
  • 我发现了一个SO问题,它说可以通过一些变通方法直接与SignalR服务器(标准websocket调用)对话,但是给定的链接已经死了.

当我尝试使用websocket直接访问服务器时,HTTP握手失败(我得到HTTP 200而不是101).

有人可以帮忙吗?

java websocket signalr signalr-hub java-websocket

6
推荐指数
1
解决办法
2936
查看次数

WebAPI + OWIN + SignalR + Autofac

几个星期以来,我一直在努力解决这个问题.

我有一个应用程序,我已配置owin后端与web api和autofac DI与后台handfire工作.我几乎关注了Stackoveflow上的每一个问题,但似乎没有任何效果.关于OWIN/Hangfire/WebAPI的我的应用程序似乎都运行正常.直到SignalR推送消息.

如果我从js客户端推送消息调用任何通知集线器端点就可以了,我可以在任何其他连接的客户端上接收推送消息.但是,当我想从我的api控制器或hangfire工作发送消息时,它永远不会到达任何客户端.

Startup.cs

public void Configuration(IAppBuilder app)
    {
        //var signalRHelper = new SignalRHelper(GlobalHost.ConnectionManager.GetHubContext<NotificationHub>());
        var constants = new Constants();
        constants.Set(ConstantTypes.AllyHrNoReplyEmailAddress, Util.Constants.AllyHrNoReplyEmailAddress);
        constants.Set(ConstantTypes.SendGridKey, Util.Constants.SendGridKey);
        constants.Set(ConstantTypes.EncryptionKey, Util.Constants.EncryptionKey);
        constants.Set(ConstantTypes.ApiUrl, Util.Constants.ApiUrl);
        constants.Set(ConstantTypes.RootFolder, Util.Constants.RootFolder);
        constants.Set(ConstantTypes.FrontEndUrl, Util.Constants.FrontEndUrl);

        GlobalConfiguration.Configuration
            .UseSqlServerStorage("AllyHrDb");
        var config = System.Web.Http.GlobalConfiguration.Configuration;

        var builder = new ContainerBuilder();
        var jobBuilder = new ContainerBuilder();
        var signalRBuilder = new ContainerBuilder();
        var hubConfig = new HubConfiguration();

        builder.RegisterApiControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired();

        builder.Register(x => constants);
        builder.RegisterModule(new ServiceModule());


        jobBuilder.Register(x => constants);
        jobBuilder.RegisterModule(new HangfireServiceModule());


        signalRBuilder.RegisterModule(new SignalRServiceModule());
        signalRBuilder.Register(x => constants);
        signalRBuilder.RegisterType<AutofacDependencyResolver>().As<IDependencyResolver>().SingleInstance();
        signalRBuilder.RegisterType<ConnectionManager>().As<IConnectionManager>().ExternallyOwned().SingleInstance();
        signalRBuilder.RegisterType<NotificationHub>().ExternallyOwned().SingleInstance();
        signalRBuilder.RegisterType<SignalRHelper>().PropertiesAutowired().ExternallyOwned().SingleInstance();
        signalRBuilder.Register(context …
Run Code Online (Sandbox Code Playgroud)

c# autofac signalr signalr-hub hangfire

6
推荐指数
1
解决办法
263
查看次数

SignalR客户端服务器已连接但未将数据推送到生产服务器上的客户端

我使用SignalR开发了一个Web应用程序,它在我的开发服务器上完美运行.但由于一些未知的原因,它不适用于生产服务器.

我做了一些测试:

$.connection.hub.start().done(function () {

        console.log('started');

});
Run Code Online (Sandbox Code Playgroud)

这总是按照预期在控制台中"启动".所以客户端和服务器是连接的.但是,当我发送任何数据,如登录凭据时,我没有收到任何回复.

这是连接帧图像.正如您所看到的,客户端正在向服务器发送数据但未收到任何响应.

在此输入图像描述

public override Task OnConnected()
{

        Clients.All.Listen("Connected to HUB");

}
Run Code Online (Sandbox Code Playgroud)

客户端侦听方法:

hub.client.listen = function (response) {

    console.log('Listen', response);

}
Run Code Online (Sandbox Code Playgroud)

有一个我用来调试的Listen方法.这不会打印任何东西.所以信号器客户端服务器没有连接.

编辑:

报告的问题在这里:https://github.com/SignalR/SignalR/issues/4279如果这有帮助.

EDIT2:

我的webapp是一个Vue js 2应用程序.我使用vue-cli编译并上传到服务器.我的signalr.js文件是从ASP.NET MVC项目复制的.

我使用SignalR 2.4制作了一个测试ASP.NET MVC 5应用程序,我能够在实时服务器上进行通信.

signalr signalr-hub signalr.client

6
推荐指数
1
解决办法
840
查看次数

信号R客户端-Xamarin表单-连接中心无法正常使用C#

为什么以下代码无法将我连接到集线器?

****我没有使用Azure函数****

我将天蓝色钥匙放在哪里?

如何建立这个复杂的网址?

这类似于我原来的天蓝色密钥AccessKey = 09988588488378383azudjGHG / E =&Version = 1123.0“;

我知道服务器和集线器正在运行,因为我使用Java创建了示例,并且该示例正在运行(请参见下面的实现)。

无论我尝试使用哪个URL,我都将“断开连接”。

public event EventHandler<MessageEventArgs> OnReceivedMessage;
public void bindConnectionMessage(bool useHttps)
{
    string urlRoot = "test.signalr.net/?AccessKey=Iwillneversharethiskeyjajajajaj####/E=&Version=1123.0";
    var url = $"http{(useHttps ? "s" : string.Empty)}://{urlRoot}/ChatHub";

    hubConnection =
     new HubConnectionBuilder().WithUrl
     (url)
     .Build();



    hubConnection.On<string>("Send", (message) =>
    {
        var finalMessage = $"Sending something {message}";
        OnReceivedMessage?.Invoke(this, new MessageEventArgs(finalMessage));

    });

    hubConnection.On<string>("Echo", (message) =>
    {
        var finalMessage = $"says {message}";
        OnReceivedMessage?.Invoke(this, new MessageEventArgs(finalMessage));

    });

    hubConnection.StartAsync();
    Debug.WriteLine(IsConnected);
}
Run Code Online (Sandbox Code Playgroud)

c# signalr signalr-hub xamarin.forms

6
推荐指数
1
解决办法
185
查看次数