如何“;了解“;未记录的SignalR服务器

本文关键字:SignalR 服务器 了解 如何 记录 | 更新日期: 2023-09-27 18:19:34

我正在编写一个c#控制台客户端,以连接到服务器的SignalR服务。使用一些Wiresharking、Firebug和检查/服务器上的signal/hubs文档,我可以连接到默认的"/signer"URL:

    var connection = new HubConnection("https://www.website.com");
    var defaultHub = connection.CreateHubProxy("liveOfferHub");
    connection.Start().ContinueWith(task =>
    {
        if (task.IsFaulted)
        {
            Console.WriteLine("Error opening the connection:" + task.Exception.GetBaseException());
        }
        else
        {
            Console.WriteLine("SignalR Connected");
        }
    }).Wait();

现在我需要找出

  • 服务器上有哪些集线器可供连接?(索要他们的名单)
  • 我可以在集线器上调用什么方法?(索要他们的名单)
  • 我可以订阅哪些服务?我将要处理的事件的名称是什么,我将要接收的对象的类是什么

IHubManager接口或HubManagerExtensions类看起来很有前途,但我甚至没能弄清楚是什么类实现了它以及如何使用它。Asp.net/signalr只提供基本的文档和教程。

提前感谢你为我指明了正确的方向!

如何“;了解“;未记录的SignalR服务器

我认为您正在寻找的是类似SignalR的WSDL。

不,SignalR没有那么复杂的东西您可以手动从SignalR代理获取:./signalr/hubs

如果你看这个代码从代理

proxies.chatHub = this.createHubProxy('chatHub'); //hub name
proxies.chatHub.client = { };
proxies.chatHub.server = {
    serverMethod: function (firstParameter, secondParameter, thridParameter) { //hub method and number of parameters
        return proxies.chatHub.invoke.apply(proxies.chatHub, $.merge(["ServerMethod"], $.makeArray(arguments)));
     }
};

您只能获得:
-集线器名称(chatHub
-服务器方法和参数数量(serverMethod,3个参数)

所以,唯一的信息是你的集线器看起来像这样:

[HubName("chatHub")]
public class ?? : Hub
{
    public ?? ServerMethod(?? firstParameter, ?? secondParameter, ?? thridParameter)
    {
        ??
    }
}

客户端方法实际上不在任何列表中,并且是动态使用的。你可以用Fiddler抓住他们。