标签: signalr-hub

如何在 MyClass:Hub 中存储数据

我正在使用 signalR 制作一个项目,我想存储一些数据,例如:

 Dictionary<string, string> UserAndConnectionId;
Run Code Online (Sandbox Code Playgroud)

如果用户断开连接并重新连接,他的connectionId将会改变,我想根据他的激活组设置他的界面。

所以,我创建了这个类:Hub 和一些函数:

public class MyClass: Hub
{
    private Dictionary<MyFirstObject, List<MySecondObject>> _reference { get; set; }
    private int _count;

    [HubMethodName("onConnected")]
    public override Task OnConnected()
    {
        Debug.WriteLine("OnConnected");
        List<MySecondObject> userList;

        _reference = new Dictionary<MyFirstObject, List<MySecondObject>>();
        userList = new List<MySecondObject>();
        userList.Add(new MySecondObject("userId", "userName", Context.ConnectionId));
        _reference.Add(new MyFirstObject("groupName", null), userList);

        _count++;
        return base.OnConnected();
    }

    [HubMethodName("onDisconnected")]
    public override Task OnDisconnected()
    {
        Debug.WriteLine("OnDisconnected");
        return base.OnDisconnected();
    }

    [HubMethodName("onReconnected")]
    public override Task OnReconnected()
    {
        Debug.WriteLine("OnReconnected");
        return base.OnReconnected();
    }
}
Run Code Online (Sandbox Code Playgroud)

显然,每个新客户端都会调用onConnected …

c# store signalr signalr-hub

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

mvc signalr 如何显示所有连接的用户

我需要使用 signalr 建立聊天,我是新手。

到目前为止,我只通过阅读其他一些代码和教程获得了聊天,这就是我得到的:

在我的 ChatApp.Hubs 上,我得到了以下代码

public static class UserHandler
{
    public static HashSet<string> ConnectedIds = new HashSet<string>();
}
public class ChatHub : Hub
{

    public void Send(string name, string message)
    {
        // Call the addNewMessageToPage method to update clients.
        Clients.All.addNewMessageToPage(name, message);
    }

    public override Task OnConnected()
    {
        UserHandler.ConnectedIds.Add(Context.ConnectionId);
        return base.OnConnected();
    }

    public override Task OnDisconnected(bool stopCalled)
    {
        UserHandler.ConnectedIds.Remove(Context.ConnectionId);
        return base.OnDisconnected(stopCalled);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的观点是从教程中复制过去的

@{
ViewBag.Title = "Chat";
}
<h2>Chat</h2>
<div class="container">
    <input type="text" id="message" />
    <input type="button" id="sendmessage" …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc signalr signalr-hub

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

SignalR 获取组用户在

我正在制作一个 1 对 1 聊天应用程序,我正在为此使用组。

你加入了一个组Groups.Add(Context.ConnectionId, roomName)

每当发送消息时,我都想打电话

Clients.Group(roomName).addMessage(username, text);
Run Code Online (Sandbox Code Playgroud)

但为此我需要一个roomName变量。如何检索用户加入的房间?

c# signalr signalr-hub

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

Xamarin background disconnected signalr

I am making an application in Xamarin Forms that uses the Signalr service to implement a chat. The chat works perfectly in the UWP version and in the Android emulator, so it does when I am debugging on my phone (Android), but when I disconnect the phone from the PC the chaos begins. The problem is that I think that when the application goes to the background, it disconnects from the Signalr server.

我尝试过自动重新连接,甚至更改 ServerTimeout 和 KeepAliveInterval 的时间。但我没有成功。应该注意的是,我住的地方还有主要的连接问题,但我的理论仍然是应用程序进入后台时。

这是我初始化服务的代码(我使用的是单例服务)。

       hubConnection …
Run Code Online (Sandbox Code Playgroud)

android signalr xamarin signalr-hub xamarin.forms

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

ASP.Net Core SignalR 身份验证始终响应 403 - 禁止

概括

我正在尝试向我的 SignalR 集线器添加安全/身份验证,但无论我尝试什么,客户端请求都会不断收到 403 - 禁止响应(尽管请求已成功通过身份验证)。

设置

我的项目基于 Microsoft 的 SignalRChat 示例:

https://learn.microsoft.com/en-us/aspnet/core/tutorials/signalr?view=aspnetcore-3.1&tabs=visual-studio

基本上我有一个带有 Razor Pages 的 ASP.Net Core Web 应用程序。该项目的目标是.Net Core 3.1。

使用的客户端库是 Microsoft 的 JavaScript 客户端库 v3.1.0。

我还参考了他们的安全方面的认证和授权文档:

https://learn.microsoft.com/en-us/aspnet/core/signalr/authn-and-authz?view=aspnetcore-3.1

关键区别在于,我没有使用 JWT Bearer 中间件,而是制作了自己的自定义令牌身份验证处理程序。

代码

聊天.js:

"use strict";

var connection = new signalR.HubConnectionBuilder()
  .withUrl("/chatHub", { accessTokenFactory: () => 'mytoken' })
  .configureLogging(signalR.LogLevel.Debug)
  .build();

//Disable send button until connection is established
document.getElementById("sendButton").disabled = true;

connection.on("ReceiveMessage", function (user, message) {
  var msg = message.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
  var encodedMsg = user …
Run Code Online (Sandbox Code Playgroud)

signalr-hub asp.net-core asp.net-core-signalr

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

我的第二个集线器上的 signalr 空连接数据

去年我有一个信号中心,工作没有任何问题。今天,当尝试添加第二个集线器时,它不起作用。我已按照与第一个相同的步骤进行操作,但无济于事。

这是我的 ~/signalr/hubs 的输出

 // Create hub signalR instance
$.extend(signalR, {
    errorPageHub: {
        _: {
            hubName: 'Web.Infrastructure.Logging.Broadcasting.ErrorPageHub',
            ignoreMembers: ['error', 'event', 'warning', 'success', 'namespace', 'ignoreMembers', 'callbacks'],
            connection: function () { return signalR.hub; }
        },

        error: function (error, callback) {
            return serverCall(this, "Error", $.makeArray(arguments));
        },

        event: function (eventDescription, callback) {
            return serverCall(this, "Event", $.makeArray(arguments));
        },

        warning: function (warning, callback) {
            return serverCall(this, "Warning", $.makeArray(arguments));
        },

        success: function (success, callback) {
            return serverCall(this, "Success", $.makeArray(arguments));
        }
    },
    pulsePageHub: {
        _: {
            hubName: 'Web.Infrastructure.Logging.Broadcasting.PulsePageHub', …
Run Code Online (Sandbox Code Playgroud)

c# signalr signalr-hub

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

SignalR - Javascript Hub Proxies

使用SignalR时,在HTML中需要引用以下两个脚本:

<script src="~/Scripts/jquery.signalR-1.0.0.js"></script>
<script src="/signalR/hubs"></script>
Run Code Online (Sandbox Code Playgroud)

第二个是用于自动生成的JavaScript集线器代理.一切正常.但是,如果以某种方式禁用JavaScript Hub Proxy生成会发生什么,可能是通过设置DisableJavaScriptProxies属性(https://github.com/SignalR/SignalR/commit/7e974f4e92551a26f3e3e0a166e1dbf6c064e850).禁用JavaScript代理生成并尝试在HTML中引用/ signalr/hubs时,会出现JavaScript错误:

Uncaught Error: SignalR: JavaScript Hub proxy generation has been disabled.
Run Code Online (Sandbox Code Playgroud)

当我在浏览器中浏览到该路径时,响应为:

throw new Error('SignalR: JavaScript Hub proxy generation has been disabled.')
Run Code Online (Sandbox Code Playgroud)

如果禁用JavaScript代理生成,$.connection.myHub.clientJavaScript代码将如何工作?为了让它有效,还需要做些什么?我得到的JavaScript错误是

Uncaught TypeError: cannot read property 'client' of undefined.
Run Code Online (Sandbox Code Playgroud)

signalr signalr-hub

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

SignalR是否发送响应包括当前连接在内的所有连接,或者除了当前连接以外的所有连接?

比方说,我有一个显示alert给所有用户的按钮.当我单击按钮时,所有连接的客户端都将看到alert.

让我们说这是通过从客户端调用服务器方法来完成的,客户端调用一个函数Client来显示警报.

例如:

public class DemoHub : Hub {
    public void ShowAlert(String message) {
        Clients.All.showAlertMessage(message);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是集线器中的服务器方法,它调用客户端功能以显示警报消息.

我的问题是,警报是否也会显示给当前客户?我的意思是,如果我点击按钮,在这种情况下我是否会看到警报?

注意:上面的场景不是真实场景,这只是我的问题的类似说明,因为我当前的场景解释起来相当复杂.

signalr signalr-hub signalr.client

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

SignalR与Angular 4

我想连接到SignalR Hub并使用Angular 4检索数据.如果您能为我提供如何实现此目的的示例,我将不胜感激.

signalr signalr-hub angular

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