在客户端获取 Signalr ConnectionId(Angular 应用程序)
Get SignalrR ConnectionId on ClientSide (Angular App)
您好,我正在使用 angular 应用程序连接到信号器,我使用的是“@aspnet/signalr”:“1.0.0-preview1-final”。
我需要将 connectionId 发送到我的控制器(我需要做一些处理并告诉所有其他客户端,但没有发出请求的用户),问题是连接 ID 是私有的,有一种方法可以获取连接 ID?
似乎是 XY problem。
告诉所有其他客户(问题 X)
中心:
public async Task TellAllOtherClients(object[] args)
{
await Clients.Others.SendAsync("method", args);
}
获取connectionId
(解Y)
中心:
public string GetConnectionId()
{
return Context.ConnectionId;
}
客户:
hub.invoke('getConnectionId')
.then(function (connectionId) {
// Send the connectionId to controller
});
客户:
let connection: signalR.HubConnection;
let accessToken = "3076a225-f2f6-4c68-b894-08accb62bb90";
connection = new signalR.HubConnectionBuilder().withUrl("http://localhost:8178/notifyHub", { accessTokenFactory: () => accessToken }).build();
connection.start().then(function(){connection.invoke("GetConnectionId").then(function(connectionId){console.log(connectionId)})}).catch(err => console.error(err));
从Javascript...
建立连接后,只需询问 SignalR 连接的连接 ID 属性(在 start().done
函数中)。像这样:
var connectionid = _signalconnection.connection.connectionId;
请确保在 start().done
和 onreconnected
事件中都这样做。
如果它在重新连接时发生变化,这允许您获取更新的连接 ID。
非常简单。
这是我的连接启动语句,希望对您有所帮助...
_signalconnection.start().then(function ()
{
console.log("Setup_SignalR: connection open.");
// Get the connectionID...
_connectionid = _signalconnection.connection.connectionId;
// Make a log entry that is page contextual...
var page = window.location.pathname;
console.log("Setup_SignalR:ConnectionOpen for page (" + page + ") with connectionID = " + _connectionid);
}).catch(function (err)
{
console.error("Setup_SignalR: connection failed. err = " + err);
});
您好,我正在使用 angular 应用程序连接到信号器,我使用的是“@aspnet/signalr”:“1.0.0-preview1-final”。
我需要将 connectionId 发送到我的控制器(我需要做一些处理并告诉所有其他客户端,但没有发出请求的用户),问题是连接 ID 是私有的,有一种方法可以获取连接 ID?
似乎是 XY problem。
告诉所有其他客户(问题 X)
中心:
public async Task TellAllOtherClients(object[] args)
{
await Clients.Others.SendAsync("method", args);
}
获取connectionId
(解Y)
中心:
public string GetConnectionId()
{
return Context.ConnectionId;
}
客户:
hub.invoke('getConnectionId')
.then(function (connectionId) {
// Send the connectionId to controller
});
客户:
let connection: signalR.HubConnection;
let accessToken = "3076a225-f2f6-4c68-b894-08accb62bb90";
connection = new signalR.HubConnectionBuilder().withUrl("http://localhost:8178/notifyHub", { accessTokenFactory: () => accessToken }).build();
connection.start().then(function(){connection.invoke("GetConnectionId").then(function(connectionId){console.log(connectionId)})}).catch(err => console.error(err));
从Javascript...
建立连接后,只需询问 SignalR 连接的连接 ID 属性(在 start().done
函数中)。像这样:
var connectionid = _signalconnection.connection.connectionId;
请确保在 start().done
和 onreconnected
事件中都这样做。
如果它在重新连接时发生变化,这允许您获取更新的连接 ID。
非常简单。
这是我的连接启动语句,希望对您有所帮助...
_signalconnection.start().then(function ()
{
console.log("Setup_SignalR: connection open.");
// Get the connectionID...
_connectionid = _signalconnection.connection.connectionId;
// Make a log entry that is page contextual...
var page = window.location.pathname;
console.log("Setup_SignalR:ConnectionOpen for page (" + page + ") with connectionID = " + _connectionid);
}).catch(function (err)
{
console.error("Setup_SignalR: connection failed. err = " + err);
});