如何 "get to know" 未记录的 SignalR 服务器?
How to "get to know" an undocumented SignalR server?
我正在编写一个 c# 控制台客户端来连接到服务器的 SignalR 服务。使用一些 Wiresharking、Firebugging 并检查服务器上的 .../signalr/hubs 文档,我能够连接到默认的“/signalr”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();
现在我需要找出答案
- 服务器上有哪些集线器可供连接? (索要他们的名单)
- 我可以在集线器上调用哪些方法? (索要他们的名单)
- 我可以订阅哪些服务?我要处理的事件的名称是什么,我将接收的对象的 classes 是什么?
IHubManager
接口或 HubManagerExtensions
class 看起来很有前途,但我什至没能找到 class 实现它的内容以及如何使用它. Asp.net/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.
捕捉它们
我正在编写一个 c# 控制台客户端来连接到服务器的 SignalR 服务。使用一些 Wiresharking、Firebugging 并检查服务器上的 .../signalr/hubs 文档,我能够连接到默认的“/signalr”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();
现在我需要找出答案
- 服务器上有哪些集线器可供连接? (索要他们的名单)
- 我可以在集线器上调用哪些方法? (索要他们的名单)
- 我可以订阅哪些服务?我要处理的事件的名称是什么,我将接收的对象的 classes 是什么?
IHubManager
接口或 HubManagerExtensions
class 看起来很有前途,但我什至没能找到 class 实现它的内容以及如何使用它. Asp.net/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.
捕捉它们