标签: signalr

SignalR获取来电者IP地址

是否可以通过HubCallerContext获取呼叫者的IP地址?或者我是否必须通过HttpContext.Current ... ServerVariables来获取它?

asp.net-mvc signalr

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

SignalR谈判404

我正在使用SignalR 2.0.在我的VS 2012本地运行时,一切正常.但是当我在IIS上发布网站时,它会中断.该站点加载但其中一个脚本返回404 Not Found.脚本是这样的.

https://example.com/signalr/negotiate?xxx

这条道路确实不存在.正确的路径应该是:

https://example.com / private/signalr/negotiate?xxx

请注意粗体部分.

在WebSite(https://example.com/)中,我有另一个应用程序(https://example.com/private/).这个是使用SignalR.

这似乎是SignalR中的一个错误,因为信号器/集线器路径可以从我的私人站点访问.

asp.net iis-7.5 signalr

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

SignalR 2.0 .NET控制台客户端

我有我的服务器控制台应用:

    static void Main(string[] args)
    {
        string url = "http://localhost:8080";
        using (WebApp.Start(url))
        {
            MyHub hub = new MyHub();
            Console.WriteLine("Server running on {0}", url);
            var key = Console.ReadLine();
            while (key != "quit")
            {
                hub.Send("Server", key);
            }
        }
    }

public class MyHub : Hub
{
    public void Send(string name, string message)
    {
        var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
        context.Clients.All.addMessage(name, message);
    }
}
public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.UseCors(CorsOptions.AllowAll);
        app.MapSignalR();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的.NET客户端应用程序

    static void Main(string[] args)
    {

        MainAsync().Wait();
        Console.ReadLine();
    } …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net signalr signalr.client

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

SignalR安全

我是SignalR的新手,但我很好奇它是多么安全.

例如,我创建了以下方法来向所有用户发送消息,如下所示:

public class NotificationHub : Hub
{
    public void Send(string message)
    {
        Clients.All.broadcastMessage(message);
    }
}
Run Code Online (Sandbox Code Playgroud)

SignalR在js文件(集线器)中生成以下方法:

proxies.notificationHub.server = {
    send: function (message) {
        return proxies.notificationHub.invoke.apply(proxies.notificationHub, $.merge(["Send"], $.makeArray(arguments)));
     }
};
Run Code Online (Sandbox Code Playgroud)

那么,世界上的任何用户都不能将其复制并粘贴到他们的控制台中,并且在没有我说出的情况下向所有用户发送他们选择的消息?

var notifications = $.connection.notificationHub;
notifications.server.send("Your site has been hacked!");
Run Code Online (Sandbox Code Playgroud)

我只是尝试了这个并且它有效 - 所以,我怎样才能阻止我的用户从客户端发送未经授权的消息?

c# asp.net-mvc signalr

11
推荐指数
1
解决办法
4333
查看次数

.NET Signalr MapConnection已经过时了?

我是.Net和SignalR的新手.我正在查看一位前同事编写的一些代码,他将此行添加到Route Config,现在正在抛出错误,说它已过时,但我读过的所有文档都建议以这种方式映射连接.

namespace FailureInvestigationToolbox {
public class RouteConfig {
    public static void RegisterRoutes( RouteCollection routes ) {
        routes.IgnoreRoute( "{resource}.axd/{*pathInfo}" );

        routes.MapRoute(
            name :"Default",
            url :"{controller}/{action}/{id}",
            defaults :new {
                controller = "fit",
                action = "Index",
                id = UrlParameter.Optional
            }
        );

        RouteTable.Routes.MapConnection<TaskListPersistence>("taskpersist", "/taskpersist");
    }
}
}
Run Code Online (Sandbox Code Playgroud)

错误是:

System.Web.Routing.SignalRRouteExtensions.MapConnection<T>    
(System.Web.Routing.RouteCollection, string, string)' is obsolete: 
'Use IAppBuilder.MapSignalR<TConnection> in an Owin Startup class. See
http://go.microsoft.com/fwlink/?LinkId=320578 for more details.'  
C:\fit\FailureInvestigationToolbox\App_Start\RouteConfig.cs
Run Code Online (Sandbox Code Playgroud)

有可能我的SignalR安装有问题,或者是IAppBuilder的方式来映射我应该做的事情......如果是这样的话?

我使用的是SignalR 2.0.3

.net asp.net signalr

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

带SignalR的WCF服务

我有一个Web应用程序,它在仪表板上有很少的图表.图表的数据在客户端的document.ready函数上获取,调用WCF服务方法.

我想要的是现在在我的应用程序中使用SignalR.我是SignalR的新手.我如何从SignalR Hub调用WCF方法,或者你可以说是不是从服务器提取数据而是希望WCF服务每隔一分钟将数据推送到客户端.

signalR和WCF服务之间是否存在通信方式.

另一种方法可以是强制客户端每分钟从WCF服务请求数据.

任何帮助将非常感激.

我已经做了以下的事情.

我的仪表板页面上的客户端功能

<script src="Scripts/jquery.signalR-2.0.3.min.js"></script>
    <!--Reference the autogenerated SignalR hub script. -->
    <script src="/signalr/hubs"></script>
<a id="refresh">Refresh</a>
    $(function() {
            var dashboardHubProxy = $.connection.dashboardHub;
            $.connection.hub.start().done(function() {
                // dashboardHubProxy.server.refreshClient(parameters);
                $("#refresh").click(function() {
                    dashboardHubProxy.server.refreshClient(parameters);
                });
            });
            dashboardHubProxy.client.refreshChart = function (chartData) {
                debugger;
                DrawChart(chartData, 'Hourly Call Count For Last ' + Duration + ' Days', '#chartHourly', 'StackedAreaChart');
            };
        });
Run Code Online (Sandbox Code Playgroud)

我的Dashboard Hub类如下

public class DashboardHub : Hub
{
    private readonly ReportService ReportService = new ReportService();


    public void RefreshClient(string parameters)
    {
        var chartData …
Run Code Online (Sandbox Code Playgroud)

asp.net wcf signalr

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

signalr不在特定的isp网络上工作

我正在使用ASP.NET MVC 4和SignalR 2.1.1.我的网站适用于所有浏览器中的大多数用户,但只有特定isp网络上的特定用户才会出现错误.

错误是这样的:

The connection to ws://domain.com/signalr/connect?transport=webSockets&clientProtocol=1.4&connectionToken=78ZpJ007jmlLSBbVzDVbfpYahHsveD3x8%2Bc5PC9h%2FgeOz5zNgE8SaKWaQAasGNLe%2BvJeI6ux6IqW0E8WQWqP6Ps%2FXjc8WPbG7G47oHSxRSx7nVj0leVa1DdXzEXnLQ%2BA&connectionData=%5B%7B%22name%22%3A%22homehub%22%7D%5D&tid=4 was interrupted while the page was loading.
Run Code Online (Sandbox Code Playgroud)

对于收到此错误的相同用户,使用其他网络(同一浏览器/计算机/手机)登录Internet可解决此问题.

到目前为止,我只看到有关此错误的问题,将问题指向浏览器,但在我的情况下,使用具有不同网络的相同浏览器可以解决问题.

任何人都知道如何解决这个问题吗?

更新1: 我注意到客户端方法确实有效,这是服务器方法不起作用.

我是什么意思?:

我有一个在线用户列表,当用户进入和退出网站时,会调用更新用户名列表的信号器客户端方法:

hub.client.addOnlineMember = function (member) {
    var newMember = addMember(member);
    memberList.append(newMember);
};
hub.client.removeOnlineMember = function (member) {
    var newMemberId = '#' + member;
    $(memberListName + ' ' + newMemberId).remove();
};
Run Code Online (Sandbox Code Playgroud)

但是,当尝试从服务器加载消息时,它的功能不起作用:

$('#LoadMore').click(function () {
        hub.server.loadTopics(page);
    });
Run Code Online (Sandbox Code Playgroud)

更新2: 我添加了日志记录:

$.connection.hub.logging = true;
Run Code Online (Sandbox Code Playgroud)

以下是调查结果:

The connection to ws://domain.com/signalr/connect?transport=webSockets&clientProtocol=1.4&connectionToken=rR8%2BSK%2BC%2FtuzPqIGKgPrUNORzBz2kP0WUmXJsURP70Zsj6RK1fOi5tUN1UGEQPntGwoEvwinMkPCXRTyliLwzfLoOBl%2BkCWoBAkAqIFYaDVk3X1MG8dQERl8Or%2F4%2Filp&connectionData=%5B%7B%22name%22%3A%22hub%22%7D%5D&tid=6 was interrupted while the page was loading. jquery.signalr-2.1.1.min.js:8
Synchronous XMLHttpRequest on the …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc-4 signalr

11
推荐指数
1
解决办法
1436
查看次数

服务器到Phonegap推送:SignalR与Azure通知中心

好吧,我继续使用我的Phonegap应用程序开发处于两难境地:对于实时事件通知,我应该使用Azure Notification Hub还是SignalR?

据我了解,SignalR通过使用Web套接字适用于实时Web应用程序.而通知中心可以轻松地跨多个平台发送推送通知.为了便于回复,让我解释一下我目前拥有的结构以及我的应用程序应该做什么.

应用程序:它基本上是一个用户可以创建组并邀请其他用户的应用程序.用户还可以使组"在线",以便其他用户可以"输入"该组.当该群组在线且用户已进入时,他们可以发送问题,交换消息等.

需求:当用户在组中提问或进入/离开组时,其他用户需要在应用屏幕中看到新用户.我可以在服务器上进行轮询以检查并根据更新UI,但这是现代人不允许的.我对这个主题的搜索引出了两件事:SignalR和NotificationHub.

当前架构:客户端 - >带有backbone.js的PhoneGap应用程序.后端 - >带有实体框架和Azure Sql Server的Asp.NET Web API.

我已经考虑过使用通知集线器和标签了.例如,当用户进入在线组时,它向服务器发送请求以注册"grouplisten:{groupId}"标签.然后,服务器将标记注册到用户的设备,并向标记为"grouplisten:{groupId}"的所有其他设备发出通知,以便其他用户使用最近加入的用户更新UI.此外,当用户离开组时,它向服务器发送请求以删除"grouplisten:{groupId}"标签,并且还通知具有"grouplisten:{groupId}"的设备.但是通过这个简单的例子,看起来这样会变得无法管理.

real-time push-notification signalr asp.net-web-api cordova

11
推荐指数
1
解决办法
5637
查看次数

SignalR奇怪的重新连接模式

我正在使用SignalR在非常特定的网络条件下(一个疯狂的代理).所以套接字根本不起作用,我必须使用长轮询.当我刷新页面时,它似乎工作了一段时间,但第一次Disconnect发生了.我正在尝试自动重新连接断开连接的事件和以下模式:

  1. 页面加载后,集线器在大约110秒内断开连接(默认超时)
  2. 第一次断开连接后,需要3个Disconnected事件才能重新启动集线器(因此它仅在第4次尝试时连接)
  3. 之后,它总是在第一次尝试时重新连接,但在大约10-15秒(不是110秒)后断开连接.因此看起来保持活动超时以某种方式在这里被调用(虽然它不是第一次尝试).

这种行为似乎很奇怪.我能做些什么来改善它吗?

.net asp.net-mvc signalr

11
推荐指数
1
解决办法
458
查看次数

Android应用没有从SignalR中心接收数据

我已经阅读了这些主题:
如何在Android Android Client中使用SignalR
但是.net客户端从SignalR服务器获取数据

我用Android编写了一个与SignalR配合使用的简单聊天系统.
它应该是客户端发送消息(通过SendMessage在服务器上调用方法),服务器应该NewMessage在客户端上调用该方法.

这是我ChatHub用C#编写的类(简化).

public class ChatHub : Hub
{
    // Store the clients connections Id
    static readonly List<string> _connectedClients;

    public override Task OnConnected()
    {
        // Keep connections id
        // This section works fine and when the android device connects to the server,
        // Its connection id will stored.
        _connectedClients.Add(Context.ConnectionId)

        //... other codes
    }

    public void SendMessage(string message)
    {
        foreach (var connectionId in _connectedClients)
        {
            // according to the …
Run Code Online (Sandbox Code Playgroud)

c# java android chat signalr

11
推荐指数
1
解决办法
4370
查看次数