天道酬勤,学无止境

How to send Parameter/Query in HubConnection SignalR Core

I'm trying to add parameter into connection to signalr.

I'm using Builder to create my Client connection and start it:

var connection = new HubConnectionBuilder()
        .WithUrl("http://10.0.2.162:5002/connection")
        .WithConsoleLogger()
        .WithMessagePackProtocol()
        .WithTransport(TransportType.WebSockets)
        .Build();

await connection.StartAsync();

I want to send a simple parameter in this connection: Something Like:

"Token": "123"

In my server side i think i can take this parameter from HttpContext:

public override Task OnConnectedAsync()
{
    var httpContext = Context.Connection.GetHttpContext();
    var token = httpContext.Request.Query["Token"];
    return base.OnConnectedAsync();
}

Any idea of how to send this parameter? Thanks.

评论

I have found how to do this after much research:

On my build i just send the token from url connection. Like this:

var connection = new HubConnectionBuilder()
        .WithUrl($"http://10.0.2.162:5002/connection?token={token}")
        .WithConsoleLogger()
        .WithMessagePackProtocol()
        .WithTransport(TransportType.WebSockets)
        .Build();

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 如何在Android中使用Signalr(How to use signalr in Android)
    问题 我正在尝试将signalR集成到android应用中,但是没有运气。 我一直在研究各种链接,但没有一个提供有关实现的适当信息。 我有以下问题。 SignalR集成必须在服务/意图服务内部完成吗? 如果我们想通过相同的调用方法接收响应,那么如何获得? 我添加了三个库,即signalr android , signalr client和gson但无法理解代码的工作原理,没有适当的文档可用来理解代码。 提出了一些问题,但没有太多信息 Android Studio中的SignalR无法使用Android中的SignalR实现p2p聊天 如果有人对本机应用程序的信号处理有经验,那对我会非常有帮助。 更新 public class SignalRService extends Service { private static final String TAG = "Service"; private HubConnection mHubConnection; private HubProxy mHubProxy; private Handler mHandler; // to display Toast message private final IBinder mBinder = new LocalBinder(); private SharedPreferences sp;
  • How to send big data via SignalR in .NET client
    We have a .NET client, which use SignalR to call Server method, but the parameter seems very big, for such scenario how to fix it? Client code: public async Task FooAsync() { var hubConnection = new HubConnection(...); await hubConnection.Start(); var hubProxy = hubConnection.CreateHubProcx("ValueHub"); //the content is very long, about 11776065 bytes (11MB) var content = File.ReadAllText(...); hubProxy.Invoke("Send", content); ... } Server code: [HubName("ValueHub")] public class ValueHub : Hub { public void Send(string json) { } } From the exception stack and source code, I found the SignalR
  • 可以用SignalR流式传输视频吗?(it is possible to stream video with SignalR?)
    问题 好吧,我正在尝试提供有关视频流的证明,我正在使用asp.net c#。 我有点迷茫,您有什么想法或建议吗? 回答1 不,SignalR基于标准(WebSocket,LongPolling,ForeverFrame等),这些标准仅流式传输基于文本的JSON消息。 您最好研究一下WebRTC规范。 现在,您可以通过使用SignalR发送控制消息来触发这两种JavaScript,从而更改浏览器当前显示的WebRTC提要,从而将这两种技术结合在一起。 回答2 我在SignalR之上实现了视频流。 您可以在http://weblogs.asp.net/ricardoperes/archive/2014/04/24/video-streaming-with-asp-net-signalr-and-html5.aspx中找到我的示例。 回答3 我不知道SignalR是否打算用于视频流,但是SignalR是客户端到客户端,客户端到服务器和服务器到客户端之间的集线器容器。 如果我想进行视频聊天,为什么不能将其用作我的集线器? 无论如何,SignalR也可以处理字节数组,不仅可以处理字符串,还可以通过将每个帧作为byte [](流)发送来进行尝试。 至少当我仅使用.Net时,我可以使用hub [[]]。 当我放入Python时,我需要使用base64序列化为字符串,并且它也可以通过我的PI运行。
  • WebRTC and Asp.NetCore
    I would like to record the Audio stream from my Angular Web App to my Asp.net Core Api. I think, using SignalR and its websockets it a good way to do that. With this typescript code, I m able to get a MediaStream: import { HubConnection } from '@aspnet/signalr'; [...] private stream: MediaStream; private connection: webkitRTCPeerConnection; @ViewChild('video') video; [...] navigator.mediaDevices.getUserMedia({ audio: true }) .then(stream => { console.trace('Received local stream'); this.video.srcObject = stream; this.stream = stream; var _hubConnection = new HubConnection('[MY_API_URL]/webrtc'
  • 通过http标头SignalR传递令牌(Passing token through http Headers SignalR)
    问题 我可以看到HubConnection中有一个选项,可以通过来自客户端的url请求传递参数。 有什么方法可以通过JS或.NET客户端的http标头传递特定令牌? 回答1 没有使用JS或.NET客户端为SignalR请求设置HTTP标头的简便方法,但是您可以在查询字符串中添加参数,这些参数将作为每个SignalR请求的一部分发送: JS客户端 $.connection.hub.qs = { "token" : tokenValue }; $.connection.hub.start().done(function() { /* ... */ }); .NET客户端 var connection = new HubConnection("http://foo/", new Dictionary<string, string> { { "token", tokenValue } }); 在集线器内,您可以通过上下文访问社区名称: Context.QueryString["token"] 进行持久连接时,也可以添加到查询字符串中。 编辑:现在可以在某些评论者指出的.NET SignalR客户端上设置标头。 在.NET客户端上设置标题 var connection = new HubConnection("http://foo/"); connection.Headers.Add(
  • Angular/SignalR Error: Failed to complete negotiation with the server
    Using SignalR for my server and Angular for my client... When I run my client I receive these errors: zone.js:2969 OPTIONS https://localhost:27967/chat/negotiate 0 () Utils.js:148 Error: Failed to complete negotiation with the server: Error Utils.js:148 Error: Failed to start the connection: Error I am guessing it is something with CORS... I am trying to implement a simple chat application. I am using the latest verison of SignalR: Here is the github that contains the code for the tutorial I am following. SignalR Chat Tutorial Here is my startup using Microsoft.AspNetCore.Builder; using
  • SignalR:如何从服务器调用.Net客户端方法?(SignalR: How to call .Net client method from server?)
    问题 我想将数据发送到我的控制台应用程序,并与“ someHub”建立连接。 我尝试按照示例中的链接进行操作,但没有结果。 服务器端代码: [HubName("somehub")] public class SomeHub : Hub { public override Task OnConnected() { //Here I want to send "hello" on my sonsole application Clients.Caller.sendSomeData("hello"); return base.OnConnected(); } } Clien旁码: public class Provider { protected HubConnection Connection; private IHubProxy _someHub; public Provider() { Connection = new HubConnection("http://localhost:4702/"); _someHub = Connection.CreateHubProxy("somehub"); Init(); } private void Init() { _someHub.On<string>("sendSomeData", s => { //This code is not
  • SignalR协商404(SignalR Negotiate 404)
    问题 我正在使用SignalR 2.0。 在VS 2012上本地运行时,一切正常。但是,当我在IIS上发布站点时,它会中断。 该站点已加载,但其中一个脚本返回404 Not Found。 脚本是这样的。 https://example.com/signalr/negotiate?xxx 此路径确实不存在。 正确的路径应为: https://example.com / private / signalr / negotiate?xxx 注意该部分以粗体显示。 在网站(https://example.com/)内,我有另一个应用程序(https://example.com/private/)。 这是使用SignalR。 这似乎是SignalR中的错误,因为从我的私有站点可以访问signalr / hubs路径。 回答1 我有一个类似的问题。 这是用于配置/ signalr URL的文档。 但是,我的解决方案与文档不同。 我没有更改标准的app.MapSignalR() ,而是将客户端代码更改为使用/MyApp/signalr 。 这是代码,其中“ MyApp”是我的Web应用程序的虚拟目录。 var connection = $.hubConnection('/MyApp/signalr', {useDefaultPath: false}); var changesHub =
  • SignalR client is reconnected after Owin restart, but message is not published
    Setup: SignalRServer console app: Microsoft.AspNet.SignalR.SelfHost v2.0.3 SignalRClient console app: Microsoft.AspNet.SignalR.Client v2.0.3 .NET 4.5.1 I do the following: Hit enter on client, a message is received at server and on client again Dispose the server by hitting any key in the server console Restart the server by hitting any key in the server console Client is reconnected Hit enter on client, message is received at server, but never reaches the client again I expect the message to be received at the client again. I suspect it has something to do with the self-hosting, since I've
  • SignalR Server Hosting Localhost
    I'm running a server with a localhost http://*:52080. On the same computer, I'm run client and trying to connect to a local IP hub http://192.168.1.102:52080/signalr. Everything works well. But if I run the client on another computer (from the same local network) and try to connect to http://192.168.1.102:52080/signalr, it does not connect. The client catches an exception ("System.AggregateException" in mscorlib.dll). Port 52080 on the computer with the hub is open. What could be the reason for the failure? Server: using System; using Microsoft.Owin.Hosting; public class Program { static void
  • 使用SignalR的WCF服务(WCF Service with SignalR)
    问题 我有一个Web应用程序,其仪表板上的图表很少。 图表的数据在客户端调用WCF服务方法的document.ready函数上获取。 我现在想要的是在我的应用程序中使用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
  • How to use signalr in Android
    I am trying to integrate signalR in android app but no luck. I've been looking at various links but none of them provide proper information about implementation. I've the following questions. SignalR integration has to be done inside Service/Intent Service? If we want to receive response via same calling method then how to get? I've added three libraries i.e signalr android,signalr client and gson but unable to understand how code works, no proper documentation is available to understand the code. Some of the questions asked but not much information SignalR in Android Studio Unable to
  • SignalR Console应用程序示例(SignalR Console app example)
    问题 是否有一个使用signalR将消息发送到.net集线器的控制台或winform应用程序的小示例? 我尝试了.net示例,并查看了Wiki,但对我而言,集线器(.net)和客户端(控制台应用程序)之间的关系没有意义(找不到此类示例)。 该应用程序是否仅需要连接集线器的地址和名称? 是否有人可以提供一小段代码来显示应用程序连接到集线器并发送“ Hello World”或.net集线器收到的内容? PS。 我有一个标准的中心聊天示例,该示例很好用,如果我尝试在Cs中为其指定中心名称,它将停止工作,即[HubName(“ test”)],您知道原因吗? 谢谢。 当前控制台应用程序代码。 static void Main(string[] args) { //Set connection var connection = new HubConnection("http://localhost:41627/"); //Make proxy to hub based on hub name on server var myHub = connection.CreateProxy("chat"); //Start connection connection.Start().ContinueWith(task => { if (task.IsFaulted) { Console
  • SignalR:协商请求期间出错:未定义(SignalR: Error during negotiation request: undefined)
    问题 我一直在尝试使javascript signal-r客户端与自托管的owin服务器配合工作。 并且正在遇到这个问题。 我已经尝试了两个代理并且没有代理方法,并且都具有和错误“ SignalR:协商请求期间出错:未定义”的相同结果。 我已经能够使跨域示例运行而没有任何问题,并且无法弄清楚我在做错什么,任何人有任何想法吗? 浏览器控制台获取日志以尝试协商,然后失败。 服务器/集线器 namespace SignalROwinHost { class Program { static void Main(string[] args) { string url = "http://localhost:9000/"; using (WebApplication.Start<Startup>(url)) { Console.WriteLine("Server running on {0}", url); Console.ReadLine(); } } public class Startup { public void Configuration(IAppBuilder app) { app.MapHubs(); } } public class ChatHub : Hub { public void Send(string message) { Clients.All.send
  • SignalR: How to call .Net client method from server?
    I want to send data to my console application wich have a connection to my "someHub". I tried to do as described in example from a link but got no result. Server side code: [HubName("somehub")] public class SomeHub : Hub { public override Task OnConnected() { //Here I want to send "hello" on my sonsole application Clients.Caller.sendSomeData("hello"); return base.OnConnected(); } } Clien side code: public class Provider { protected HubConnection Connection; private IHubProxy _someHub; public Provider() { Connection = new HubConnection("http://localhost:4702/"); _someHub = Connection
  • Android Studio中的SignalR集成(SignalR integration in android studio)
    问题 我在项目中使用signalR lib。 但我无法自行编译https://github.com/SignalR/java-client的库-我在互联网上找到了它们。 但似乎还不完整(缺少WebsocketTransport) 当我编译https://github.com/SignalR/java-client时,我得到了两个库,并将它们粘贴到我的app.gradle中- compile files ('libs/signalr-client-sdk.jar') compile files ('libs/signalr-client-sdk-android.jar') Progects很烂,但是当我按Run时-它失败了。 这是堆栈跟踪- UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000) at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472) at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java
  • SignalR .Net Client fails with 500 server error on device, on simulator works fine
    I'm trying to implement a chat in my app, with azure asp.net web api on back-end and xamarin ios on front-end. So on back-end I configure my hub with this lines: var hubConfiguration = new HubConfiguration(); hubConfiguration.EnableDetailedErrors = true; app.MapSignalR("/signalr", hubConfiguration); and here is my hub source: [HubName("Chat")] public class Chat : Hub { public Task JoinRoom(string roomName) { return Groups.Add(Context.ConnectionId, roomName); } public Task LeaveRoom(string roomName) { return Groups.Remove(Context.ConnectionId, roomName); } public Task Send(string message
  • 使用SignalR将数据从SQL Server推送到Web应用程序(Pushing data from SQL Server to Web Application with SignalR)
    问题 我的ASP.NET MVC 4 Web应用程序正在向客户端显示频繁更新的数据。 数据源自外部源(服务器上安装的应用程序),并由SQL Server 2008 R2处理。 当前,数据流非常传统:客户端从ASP.NET进行轮询,而ASP.NET从SQL Server依次进行轮询。 为了避免轮询(并且现在我需要Web应用程序的用户之间进行实时交互),我改变了推送方法,使用signalR向客户端广播数据。 这样可以提高用户体验的流畅度,还可以减少客户端和ASP.NET服务器之间轮询的开销。 现在的问题是颠倒了SSRV和ASP.NET之间的流程:我想以最有效的方式将数据从SSRV推送到ASP.NET 。 SSRV正在运行昂贵的查询以导入一些外部数据-处理完数据后,它们也准备好通过广播在Internet上共享。 我当前的穷人方法:向Web应用程序(在localhost上)发出POST Http请求以发送数据(我正在为此使用CLR函数)。 处理完数据后,我将它们打包以准备HttpWebRequest ,并在Service Broker中将它们排队,以免影响其他活动,然后就完成了。 我已经注销了SqlDependency因为这将迫使我查询数据-并不是一个很大的优势(我将折衷使用localhost HTTP请求来查询在SQL Server上运行的查询) 同时
  • 带Web套接字的SignalR(SignalR with Web Sockets)
    问题 我正在尝试使Websocket在我的开发环境中工作: Visual Studio 2010 Windows 7的信号R 0.51 最新的Chrome / Firefox 不幸的是,Javscript客户端正在使用长时间轮询。 当我在客户端强制使用网络套接字时,我根本无法连接: $.connection.hub.start({ transport: ['webSockets'] }) 服务器代码是自托管的,基于示例,如下所示: static void Main(string[] args) { string url = "http://localhost:8081/"; var server = new Server(url); // Map the default hub url (/signalr) server.MapHubs(); // Start the server server.Start(); Console.WriteLine("Server running on {0}", url); // Keep going until somebody hits 'x' while (true) { ConsoleKeyInfo ki = Console.ReadKey(true); if (ki.Key == ConsoleKey.X) { break; } } }
  • How to create custom authentication mechanism based on HTTP header?
    I'm leaving old version of question on a bottom. I'd like to implement custom authentication for SignalR clients. In my case this is java clients (Android). Not web browsers. There is no Forms authentication, there is no Windows authentication. Those are plain vanilla http clients using java library. So, let's say client when connects to HUB passes custom header. I need to somehow authenticate user based on this header. Documentation here mentions that it is possible but doesn't give any details on how to implement it. Here is my code from Android side: hubConnection = new HubConnection("http