小编Dmi*_*kov的帖子

如何使用SignalR保证消息传递?

我正在使用C#和SignalR开发实时客户端 - 服务器应用程序.我需要尽快向客户发送消息.我在服务器上的代码:

for (int i = 0; i < totalRecords; i++)
{
    hubContext.Clients.Client(clientList[c].Key).addMessage(
    serverId, RecordsList[i].type + RecordsList[i].value);
    Thread.Sleep(50);       
}
Run Code Online (Sandbox Code Playgroud)

如果有延迟> = 50 ms,一切正常,但如果没有延迟或延迟小于50 ms,则会丢失一些消息.我需要尽可能快地发送消息.我想我需要检查是否收到消息,并且只在发送另一个消息之后.
如何以正确的方式做到这一点?

c# signalr

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

如何使用SignalR事件以正确的方式保持连接活动?

我正在使用SignalR,ASP.NET和C#开发实时客户端 - 服务器应用程序.我使用localhost作为主机和VS2013.

我的问题是:

  1. 为什么我关闭服务器,在Web客户端上发生" 重新连接 "事件?

  2. "断开"事件仅在40秒以后发生.如何减少这个时间?

  3. 我需要客户端在启动时连接到服务器."重新连接"事件应仅在固定间隔内发生.如果"重新连接"间隔时间结束,则客户端应作为新客户端连接.如何归档这个目标?

最后,我想问一下-如何永葆使用连接SignalR在正确的方式?

我正在使用此代码:

C#

public override Task OnDisconnected()
{
clientList.RemoveAt(nIndex);
Console.WriteLine("Disconnected {0}\n", Context.ConnectionId);
return (base.OnDisconnected());
}

public override Task OnReconnected()
{
Console.WriteLine("Reconnected {0}\n", Context.ConnectionId);
return (base.OnReconnected());
}
Run Code Online (Sandbox Code Playgroud)

使用Javascript

$.connection.hub.reconnected(function () {
// Html encode display name and message.
var encodedName = $('<div />').text("heartbeat").html();
var now = new Date();

// Add the message to the page.
$('#discussion').append('Reconnected to server: ' + …
Run Code Online (Sandbox Code Playgroud)

c# asp.net signalr

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

使用SQL进行二进制搜索查询

我有一个在SQL Server 2014表中呈现的二叉树:

UserID ParentUserID Position 
----------------------------
1      Null         Null     <-- ROOT
2      1            Left
3      1            Right    <-- Last Right for ID=1 (CTE query return 3)
4      2            Left
5      4            Left
6      5            Left
7      6            Left     <-- Last Left for ID=1 (CTE query return 6)
Run Code Online (Sandbox Code Playgroud)

要获得最后一个id和最后一个id我正在使用CTE查询:

; with  left_hand_recurse as
(
        select  UserID
        ,       ParentUserID
        ,       1 as depth
        from    Table1 where ParentUserID is null
        union all
        select  child.UserID
        ,       child.ParentUserID
        ,       parent.depth + 1
        from    left_hand_recurse …
Run Code Online (Sandbox Code Playgroud)

sql t-sql database sql-server common-table-expression

7
推荐指数
1
解决办法
2289
查看次数

Azure功能和Azure应用程序网关或API管理

我开发了几个Microsoft Azure功能.我想使用带防火墙的网关来使我的Azure功能可用并仅使用一个公共IP进行保护.

有没有办法将Azure功能与Azure应用程序网关或API管理一起使用?

在这种情况下,最好的方法是什么?

azure azure-api-management azure-api-apps azure-functions

7
推荐指数
1
解决办法
4138
查看次数

为什么在Windows窗体中心上下文中Context.User.Identity.Name为空?

我需要传递User.Identity.Name给Windows窗体客户端.

方法

public override Task OnConnected() {

    string userName = Context.User.Identity.Name;
    string connectionId = Context.ConnectionId;

    var user = Users.GetOrAdd(userName, _ => new User {
        Name = userName,
        ConnectionIds = new HashSet<string>()
    });

    lock (user.ConnectionIds) {
        user.ConnectionIds.Add(connectionId);
        if (user.ConnectionIds.Count == 1) {
            Clients.Others.userConnected(userName);
        }
    }
    return base.OnConnected();
}
Run Code Online (Sandbox Code Playgroud)

但是Context.User.Identity.Name是空的吗?为什么?怎么解决?

.net c# winforms signalr

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

如何使用Windows窗体应用程序将QueryString值传递给SignalR服务器

我正在使用SignalR开发实时网络应用程序.我有Web和Windows窗体客户端.我使用QueryString使用此javascript将参数"param"从Web App客户端传递到服务器:

         $(function () {
            //Set the hubs URL for the connection
            $.connection.hub.url = "http://localhost:8089/signalr";                

            // Declare a proxy to reference the hub. Declare queryString param
            $.connection.hub.qs = "param" + urlParams['param'];
            $.connection.hub.start();
...
Run Code Online (Sandbox Code Playgroud)

在服务器端我正在使用:

   public override Task OnConnected()
   {
        var queryStr = Context.QueryString["param"];

        if (queryStr == value )
           DoSmth();
        else DoSmth2();
   }
Run Code Online (Sandbox Code Playgroud)

我需要使用Windows Form App中的QueryString传递参数"param".我需要类似的东西:$.connection.hub.qs = "param" + urlParams['param'];但对于Windows Form应用程序.怎么做?

c# winforms signalr

0
推荐指数
1
解决办法
6179
查看次数