标签: signalr

signalR网络农场

我已成功使用signalR在ASP.NET MVC3中创建一个简单的聊天应用程序.在我的开发机器上,一切都很棒.

应用程序在具有多个Web服务器的Web场环境中是否以相同的方式工作(例如,上线)?signalR如何跨这些服务器管理其集线器?

谢谢.

c# asp.net-mvc-3 signalr

9
推荐指数
1
解决办法
4094
查看次数

如何在.NET客户端中通过SignalR发送大数据

我们有一个.NET客户端,它使用SignalR来调用Server方法,但参数看起来非常大,对于这种情况如何解决呢?

客户代码:

public async Task FooAsync()
{
    var hubConnection = new HubConnection(...);
    await hubConnection.Start();

    var hubProxy = hubConnection.CreateHubProcx("ValueHub");
    //the content is very long, about 11776065 bytes (11MB)
    var content = File.ReadAllText(...);
    hubProxy.Invoke("Send", content);
    ...
}
Run Code Online (Sandbox Code Playgroud)

服务器代码:

[HubName("ValueHub")]
public class ValueHub : Hub
{
    public void Send(string json)
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

从异常堆栈和源代码中,我发现SignalR内部使用HttpClientFormUrlEncodedContent类型HttpContent,也许限制来自这里.

System.UriFormatException was unhandled
  HResult=-2146233033
  Message=Invalid URI: The Uri string is too long.
  Source=System
  StackTrace:
       at System.UriHelper.EscapeString(String input, Int32 start, Int32 end, Char[] dest, …
Run Code Online (Sandbox Code Playgroud)

c# asp.net signalr signalr.client

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

SignalR WebRTC WebSocket已处于CLOSING或CLOSED状态

我想对SignalR和WebRTC最简单的实现进行测试.我在https://github.com/foyzulkarim/WebRtc中托管了代码

我制作了两个不同的文件"index.html"和"index1.html".在index.html中,我通过signalr广播了一个视频文件,并且进展顺利.但是,当我用WebCam的Feed替换现有的视频文件时,它开始出错.

运行几秒后,我开始收到此错误"WebSocket已处于CLOSING或CLOSED状态." 我试图节流但没有变化,仍然得到错误.知道为什么会这样吗?

错误图片 在此输入图像描述

您可以查看视频我 http://1drv.ms/1meM1OI

websocket html5-video html5-canvas signalr webrtc

9
推荐指数
1
解决办法
2298
查看次数

构建SignalR/Knockout仪表板,保证消息传递

我正在考虑使用实时消息替换我们公司的监控仪表板.

旧概念:

在我们公司,我们有一个仪表板,显示超过700台物理机的(相当详细的)状态,以及添加的元信息.它大约在1.5年前由我的一位同事在ASP.NET Web Forms(我不喜欢)中构建,以使调度员能够协调我们的技术人员应该去解决问题的位置(这些机器位于不同的地理位置) ).

不幸的是,该应用程序使用30秒的完整页面自动刷新,后面有一个大查询.它很慢,它完全重置你的视图(正如我所说,仪表板包含超过700多台机器).我个人想改变这个.使用起来非常烦人.我们的调度员已经学会了接受这一点,但我认为他们应该得到更好的待遇.

新概念:

我想在新的仪表板上显示相同的内容,但具有实时更新和"消息"日志.在我们公司,我们在MS堆栈上工作了大约90%,因此我计划使用ASP.NET MVC,SignalR,SQL Server和Knockout.

我现在有什么

看看这个简单的图表:

 +----+ +----+ +----+ +----+ +----+ +----+ +----+            
 | PC | | PC | | PC | | PC | | PC | | PC | | PC | ... ...    
 +--+-+ +--+-+ +-+--+ +--+-+ +--+-+ +--+-+ +--+-+            
    |      |     |       |      |      |      |              
    |   +--+  +--+  +----+    <-+    <-+    <-+              
    |   |     |     |                                        
+---v---v-----v-----v+         +-----------------------+     
|                    | TCP/IP  |                       |     
| Monitoring Backend +--------->  Data …
Run Code Online (Sandbox Code Playgroud)

c# asp.net real-time signalr knockout.js

9
推荐指数
2
解决办法
1944
查看次数

SignalR - 发送消息OnConnected

我今天一直在尝试使用SignalR,它非常整洁.基本上我想要实现的目标如下:

一旦设备连接,它应该向第一个发送消息.如果有超过1个连接的设备,我想发送两条消息.最后连接的客户端之外的所有人.并且向最后连接的客户端发送一条消息.

当我将它放在自定义API控制器中并且基本上调用动作时,我一直使用的代码非常完美,但这不是我想要的.

我想在OnConnected没有任何用户交互的情况下在设备连接时立即发送消息,但是当我将代码放在OnConnected覆盖内时它会停止工作.它不再发送给特定客户端(首先连接和最后连接).

我希望有人能够帮助我解决这个问题,因为我现在已经敲了几个小时.

    public override System.Threading.Tasks.Task OnConnected()
    {
        UserHandler.ConnectedIds.Add(Context.ConnectionId, UserHandler.ConnectedIds.Count + 1);

        int amountOfConnections = UserHandler.ConnectedIds.Count;
        var lastConnection = UserHandler.ConnectedIds.OrderBy(x => x.Value).LastOrDefault();
        var allExceptLast = UserHandler.ConnectedIds.Take(amountOfConnections - 1).Select(x => x.Key).ToList();

        if (amountOfConnections == 1)
        {
            Clients.Client(UserHandler.ConnectedIds.First().Key).hello("Send to only(also first) one");
        }
        else
        {
            Clients.Clients(allExceptLast).hello("Send to everyone except last");
            Clients.Client(lastConnection.Key).hello("Send to only the last one");
        }

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

c# asp.net signalr signalr-hub signalr.client

9
推荐指数
2
解决办法
2万
查看次数

SqlDependency.OnChange触发但SqlDataReader没有返回数据

当我使用datetime列过滤器执行查询时

WHERE [Order].CreatedOn >= @CreatedOn
Run Code Online (Sandbox Code Playgroud)

使用a SqlDependency,对数据源的更改将触发SqlDependency.OnChange事件,但SqlDataReader与之关联的SqlCommand不会返回数据(reader.HasRows始终返回false).

当我只是将我的SQL语句中的过滤条件更改为

WHERE [Order].StatusId = 1"
Run Code Online (Sandbox Code Playgroud)

它只是工作正常和SqlDataReader返回数据(reader.HasRows返回true)

码:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace SignalRServer
{
    public partial class DepartmentScreen : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var u = System.Security.Principal.WindowsIdentity.GetCurrent().User;
            var UserName = u.Translate(Type.GetType("System.Security.Principal.NTAccount")).Value;

            CheckForNewOrders(DateTime.Now);
        }

        private void CheckForNewOrders(DateTime dt) …
Run Code Online (Sandbox Code Playgroud)

c# asp.net sqldependency query-notifications signalr

9
推荐指数
1
解决办法
1181
查看次数

SignalR - 获取服务器上已连接连接ID的列表

在我的集线器中,如何获取所有当前连接的connectionId的列表?

从本质上讲,我正在进行一些加密(是的,我已经与一群人交谈,没有任何内置工作)并且Aes每个连接都有一个实例.所以基本上当我需要向所有客户端发送消息时,我不能只做Clients.All,而是必须手动枚举所有客户端,获取其Aes编码器(通过id),然后向其发送消息.

signalr

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

SignalR客户端由于不活动而停止连接

我在控制台应用程序和WPF客户端中有一个signalR集线器.在启动时,signalR连接初始化,并应始终保持活动状态.每秒使用当前SystemTime将消息从服​​务器推送到客户端(这是您可以在带有'SystemTimeUpdateNotification'的日志中看到的)

我现在描述的行为是在Windows7设备上:每隔一段时间我就会看到客户端失去与服务器的连接.由于某种原因,客户端检测到它已处于非活动状态并停止连接.我不知道'自上午4/20/2017 3:04:06 AM'和'超时00:00:50'来自哪里'非活动'.如果我在同一时间检查服务器上的日志,我可以看到没有keepalive消息.

    2017-04-20 05:04:04.0728,Trace,Received notification SystemTimeUpdateNotification
    2017-04-20 05:04:05.0859,Trace,Received notification SystemTimeUpdateNotification
    2017-04-20 05:04:06.0999,Trace,Received notification SystemTimeUpdateNotification
    2017-04-20 05:05:13.1020,Trace,Received notification SystemTimeUpdateNotification
    2017-04-20 05:05:14.1160,Trace,Received notification SystemTimeUpdateNotification
    2017-04-20 05:05:14.5511,Info,The client has been inactive since 4/20/2017 3:04:06 AM and it has exceeded the inactivity timeout of 00:00:50. Stopping the connection.
    2017-04-20 05:05:14.5871,Info,SignalR connectionstate changed from 'Connected' to 'Disconnected'
    2017-04-20 05:05:14.5871,Trace,Received notification NotificationConnectionStateChanged
    2017-04-20 05:05:14.5981,Info,Disconnecting...
    2017-04-20 05:05:14.5981,Info,Cancel ongoing operations
    2017-04-20 05:05:19.6104,Info,SignalR connectionstate changed from 'Disconnected' to 'Connecting'
    2017-04-20 05:05:19.6104,Trace,Received notification NotificationConnectionStateChanged
    2017-04-20 05:05:19.6104,Info,Disconnecting... …

connection timeout signalr

9
推荐指数
1
解决办法
2918
查看次数

SignalR .NET客户端连接到Blazor .NET Core 3应用程序中的Azure SignalR服务

我正在尝试在ASP.NET Core 3.0 Blazor(服务器端)应用程序与Azure SignalR服务之间建立连接。最后,我将SignalR客户端(服务)注入到一些Blazor组件中,以便它们可以实时更新我的​​UI / DOM。

我的问题是,.StartAsync()在集线器连接上调用方法时,我收到以下消息:

响应状态代码不表示成功:404(未找到)。

BootstrapSignalRClient.cs

该文件加载了我对SignalR服务的配置,包括URL,连接字符串,键,方法名称和集线器名称。这些设置在静态类中捕获,SignalRServiceConfiguration并在以后使用。

public static class BootstrapSignalRClient
{
    public static IServiceCollection AddSignalRServiceClient(this IServiceCollection services, IConfiguration configuration)
    {
        SignalRServiceConfiguration signalRServiceConfiguration = new SignalRServiceConfiguration();
        configuration.Bind(nameof(SignalRServiceConfiguration), signalRServiceConfiguration);

        services.AddSingleton(signalRServiceConfiguration);
        services.AddSingleton<ISignalRClient, SignalRClient>();

        return services;
    }
}
Run Code Online (Sandbox Code Playgroud)

SignalRServiceConfiguration.cs

public class SignalRServiceConfiguration
{
    public string ConnectionString { get; set; }
    public string Url { get; set; }
    public string MethodName { get; set; }
    public string Key { get; set; }
    public string HubName { …
Run Code Online (Sandbox Code Playgroud)

c# signalr signalr.client asp.net-core-signalr azure-signalr

9
推荐指数
1
解决办法
475
查看次数

用于点对点视频聊天的 ASP.NET Core 和 WebRTC

我想要实现的是一个 POC,其中两个用户使用 ASP.NET Core 和 WebRTC(如果需要 SignalR)在对等视频通话中聊天。

模拟屏幕

我阅读了很多关于 WebRTC的文档,但我发现的大多数示例都不起作用,因为它们显示了该协议的旧实现(例如本教程)。另外,我在Github上看到了这个实现,但它使用getUserMedia. 如果我使用最新版本的adapter.js.

错误信息

我用谷歌搜索了一下,我发现了其他例子,比如一篇关于html5rocks 的文章:在这种情况下,indx.html在本地工作,但如果我将它部署在服务器上,我会收到这个错误。

在此处输入图片说明

我尝试使用的最后一个脚本是Simple Peer

如果我理解正确,新的正确方法是使用RTCPeerConnectionand RTCDataChannel。我找不到工作示例。

signalr webrtc asp.net-core

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