标签: signalr

SignalR - 启动

我正在寻找快速而肮脏的答案.我只是在消隐,现在盯着屏幕超过12个小时后,我想我被枪杀了.

我想做一个简单的SignalR应用程序作为教程.我找到了这个例子,但我一直得到门票未定义的错误.我找到了更多,并继续得到同样的错误.我把样本项目比作我的,我找不到任何不满.

好像$.connection.ticketHub$.connection.chat正在返回未定义的对象.我需要做些什么特别的事情/signalr/hubs吗?非常感谢任何其他的想法.

jquery asp.net-mvc-3 signalr

13
推荐指数
1
解决办法
8641
查看次数

使用JavaScript从SignalR/Json.NET反序列化复杂对象图中的引用

我正在使用SignalR将复杂的对象图返回给我的JavaScript客户端.这个对象图对同一个对象有多个引用,因此SignalR/Json.NET返回的JSON看起来很像这样:

{
    "$id": "57",
    "Name": "_default",
    "User": {
        "$id": "58",
        "UserTag": "ken",
        "Sessions": [{
            "$id": "59",
            "SessionId": "0ca7474e-273c-4eb2-a0c1-1eba2f1a711c",
            "User": {
                "$ref": "58"
            },
            "Room": {
                "$ref": "57"
            }
        }],
    },

    "Sessions": [{
        "$ref": "59"
    }]
}
Run Code Online (Sandbox Code Playgroud)

(当然,在现实生活中要复杂得多,但你明白了.)

当然,当Json.NET通过引用而不是按值进行序列化时,它会为每个对象分配一个$ id值(例如,"$id":"57"然后稍后只使用该id引用该对象(例如,"$ref":"57".).告诉我,当Json.NET(使用C#/ .NET)反序列化这些引用时,它会将对象的适当实例放在适当的位置.

到目前为止一切都很好 - 但是在JavaScript中对这些进行反序列化的最佳方法是什么,以便我在适当的位置获得适当的对象实例,而不仅仅是奇怪的$ ref字段?

我可能会编写自己的通用解串器,但我必须想象其他人已经解决了这个问题,而且我很快就不会重新发明任何轮子.不幸的是,我的Google技能显然不足以找到解决方案:-).

编辑:

我看到有一个IETF草案提案,关于这类事情应该如何运作.看起来总是有用的道格拉斯克罗克福德有一个暂时的实施.不幸的是,IETF提议使用了与Json.NET使用不同的模式.

javascript json json.net deserialization signalr

13
推荐指数
1
解决办法
2183
查看次数

SignalR跨域连接与自托管和身份验证

我在使用OWIN自托管SignalR时遇到了CORS问题,这只有在我尝试启用身份验证时才会发生.

我在网络浏览器中收到的错误是:

XMLHttpRequest无法加载http://.../signalr/negotiate?[snip] Origin-Control-Allow-Origin不允许

只有在我使用此答案中的方法在我的自托管服务器中启用身份验证时才会发生这种情况:

public void Configuration(IAppBuilder app)
{
  var listener = (HttpListener)app.Properties[typeof(HttpListener).FullName];
  listener.AuthenticationSchemes = AuthenticationSchemes.Ntlm; 

  app.MapHubs(new HubConfiguration { EnableCrossDomain = true });
} 
Run Code Online (Sandbox Code Playgroud)

如果我注释掉该AuthenticationSchemes行,那么CORS就可以了(我已经检查了这些说明中的所有内容).如果我使用其他身份验证方案而不是NTLM,我会遇到同样的问题.

使用Fiddler检查发生了什么,启用身份验证,我看到从服务器返回的必要CORS头:

Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:[我的服务器]

但是,一旦我启用身份验证,我得到一个401响应,缺少这些标头.所有请求都有必要的Origin标题.

在检查了SignalR 源代码之后,它看起来像是正在设置标头,但可能在启用了身份验证的HttpListener情况下发送了初始的401响应而没有点击此代码.

所以我认为我的问题是:如何在其身份验证协议的协商中HttpListener包含Access-Control-Allow-Origin标题?

cors signalr owin

13
推荐指数
1
解决办法
2627
查看次数

SignalR可以与asp.net WebForms一起使用吗?

我想SignalR在我的项目中使用实时更新.

我的项目是在开发的WebForms.

我搜索了3,4天,但我找到的只是MVC的例子.谁有人建议解决方案?

asp.net visual-studio-2010 signalr real-time-updates

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

AngularJS与SignalR

我正在玩Angular和SignalR,我曾尝试创建一个充当经理的服务.

dashboard.factory('notificationsHub', function ($scope) {
  var connection;
  var proxy;

  var initialize = function () {
    connection = $.hubConnection();
    proxy = connection.createHubProxy('notification');

    proxy.on('numberOfIncidents', function (numOfIncident) {
      console.log(numOfIncident);
      $scope.$emit('numberOfIncidents', numOfIncident);
    });

    connection.start()
      .done(function() {
        console.log('Connected');
      })
     .fail(function() { console.log('Failed to connect Connected'); });
  };

  return {
    initialize: initialize
  };
});
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误Error: Unknown provider: $scopeProvider <- $scope <- notificationsHub.

如何使用pubsub将所有通知传递给控制器​​?也许jQuery?

signalr angularjs

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

从另一个控制器呼叫信号器

我有一个ChatHub向客户端发送消息:

public class ChatHub : Hub
{
    public void Send(string name, string message)
    {
        Clients.All.addNewMessageToPage(name, message);
    }
}
Run Code Online (Sandbox Code Playgroud)

如何调用Send函数将消息广播到所有客户端another controller

我试过这个:

[HttpPost]
public void Post(Chat chat)
{
    var hubContext = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
    hubContext.Clients.All.Send(chat.Name, chat.Message);
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc-4 signalr

13
推荐指数
1
解决办法
9749
查看次数

SignalR给出'ConnectionId的格式不正确'

我有一个SignalR项目在我的开发环境中没有问题但是一旦它被转移到生产中,几乎每个调用都会因错误而失败

ConnectionId的格式不正确.

我在StackOverflow上看到了一些关于相同错误消息的其他项目,但没有一个项目有一个有帮助的解决方案.

我使用SignalR 2.0.2和SignalR Scaleout与SQL Server,实际上是SignalR的负载均衡器,使用SQL Server进行协调.

事件代码:3005事件消息:发生了未处理的异常.活动时间:2/11/2014 9:11:27 PM活动时间(UTC):2014年2月2日上午3:11:27活动编号:cff1fd93fa6d4b83b1848078a905371c活动顺序:73活动现场:10活动详情代码:0申请信息:

Application domain: /LM/W3SVC/2/ROOT-3-130366479327251392 
Trust level: Full 
Application Virtual Path: / 
Application Path: C:\inetpub\wwwroot\<remvoved>
Machine name: BSDUSHC1WW09    Process information: 
Process ID: 7088 
Process name: w3wp.exe 
Account name: <remvoved>    Exception information: 
Exception type: InvalidOperationException 
Exception message: The ConnectionId is in the incorrect format.    at
Run Code Online (Sandbox Code Playgroud)

Microsoft.AspNet上的Microsoft.AspNet.SignalR.PersistentConnection.ProcessRequest(HostContext context)中的Microsoft.AspNet.SignalR.PersistentConnection.GetConnectionId(HostContext context,String connectionToken)位于Microsoft.AspNet的Microsoft.AspNet.SignalR.Hubs.HubDispatcher.ProcessRequest(HostContext context) Microsoft.Owin.Mapping.MapMiddleware.d__0.MoveNext()中的.SignalR.PersistentConnection.ProcessRequest(IDictionary`2环境)---在抛出异常的前一个位置的堆栈跟踪结束---在System.Runtime.ExceptionServices上. System.Web.HttpApplication上的System.Web.HttpApplication.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()中的Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContext.EndFinalWork(IAsyncResult ar)中的ExceptionDispatchInfo.Throw(). ExecuteStep(IExecutionStep step,Boolean&completedSynchronously)

请求的信息:请求URL:http:/// signalr /连接运输= serverSentEvents&connectionToken = GZlhDBCjkD1/bL1rc4Rlq2PVKYRs0B9nN7b71cU/E6x7sCsFvR1DqM/rBnDhg + URwkYyBlGmrczV59XIn/goyt9x0xXOd8Gs3Qswo1oXqSttH2QPO548C0fbdBvvlUupzS4S0Rl + aShoQwnj + qFDpA ==&connectionData =?[{ "名称": …

signalr

13
推荐指数
2
解决办法
4100
查看次数

SignalR:在C#客户端中检测活动连接

我目前正在使用SignalR(2.1)Hubs开发一个应用程序.

我有一个WPF客户端,另一个是WCF客户端.一切都很好,因为他们完美地传递了信息.

我现在遇到的唯一问题是我注意到当应用程序因自动重启,WCF服务器故障以及其他一些原因而关闭时,OnDisconnected根本没有被触发.超时是默认值30秒.即使过了1天,我也从未打过电话(我试过).但是,超时适用于Web客户端.

它只在我调用hub.connection.stop()时才有效.

然而,当客户端是浏览器时,Ondisconnected方法非常有效.

因此,我想问一下Signal R Hub是否有办法检查客户端是否仍然连接或已经退出(例如ping)?

c# signalr

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

为什么SignalR依赖于jQuery

所以我知道SignalR的升级版本不依赖于jQuery.

https://github.com/SignalR/SignalR/issues/372 - 将其从jQuery中移除的封闭式问题.

但是为什么它首先依赖于它呢?(显然从技术角度来看)看起来jQuery似乎没有什么特别之处(除了存在之外,它可以让你的生活更轻松).

这主要是由于jQuery的实用性?

javascript jquery signalr

13
推荐指数
1
解决办法
3299
查看次数

SignalR C#MVC将匿名用户映射到客户端ID

问题:如何管理匿名用户,以便在Hub发出响应时,单个浏览器中的多个选项卡都会更新?

方案如下:

我想将SignalR集成到一个项目中,以便匿名用户可以与运营商进行实时聊天.显然,使用iIdentity进行身份验证的用户通过Client.User(username)命令进行映射.但目前一位匿名用户正在浏览site.com/tools和site.com/notTools我无法仅使用connectionID向所有标签发送消息.只有一个选项卡收集响应.

我尝试过使用IWC补丁,但该工具不考虑将聊天信息保存到数据库中,我认为通过ajax传递变量并不是一种读取/写入数据库的安全方法.

我还查看了以下内容:管理匿名用户的SignalR连接

然而,创建一个这样的基础并使用会话似乎不如Owin安全.

我有想法通过每次用户连接时创建一个虚假帐户来使用client.user(),并在断开连接时将其删除.但我宁愿不用垃圾帐户填充我的aspnetusers数据库上下文似乎没必要.

是否可以使用UserHandler.ConnectedIds.Add(Context.ConnectionId);也映射假用户名?我不知所措.

使用iUserId提供商是否有意义?

public interface IUserIdProvider
{
    string GetUserId(IRequest request);
}
Run Code Online (Sandbox Code Playgroud)

然后创建一个数据库,将IP地址存储到connectionID和单个用户名?

数据库:

用户:使用FK连接ID

|userid|username|IP       |connectionIDs|
|   1  | user1  |127.0.0.1|  1          |
|   2  | user2  |127.0.0.2|  2          |
Run Code Online (Sandbox Code Playgroud)

connectionIDs:

|connectionID|SignalRID|connectionIDs|
|      1     | xx.x.x.x|     1       |
|      2     | xx.xxx.x|     2       |
|      3     | xx.xxxxx|     2       |
|      4     | xxxxx.xx|     2       |
Run Code Online (Sandbox Code Playgroud)

然后可能在连接周围编写逻辑?

public override Task OnConnected()
    {
     if(Context.Identity.UserName != null){
      //add a connection based on the …
Run Code Online (Sandbox Code Playgroud)

c# signalr asp.net-mvc-5

13
推荐指数
2
解决办法
1292
查看次数