如何使用 Javascript 客户端调用具有枚举参数的 SignalR Hub 方法?

How to call SignalR Hub Method that has Enum parameters with a Javascript Client?

使用 C# signalR 客户端非常简单,而且有效;但我坚持使用 JS 客户端。

 public async Task MyHubMethod(string userName, CityEnum city, FruitEnum fruit) {
    //etc.
 }
 
public enum CityEnum
{
    LONDON,
    LISBON,
    RIO,
    SYDNEY
}

public enum FruitEnum
{
    APPLES,
    BANANAS,
    ORANGES
}

//C# Client, YAY it works !
    string userName = "mindi-mink";
    CityEnum city = CityEnum.LONDON;
    FruitEnum fruit = FruitEnum.APPLES;
    await _connection.InvokeAsync("MyHubMethod", userName, city, fruit);
    

//Javascript Client:
    ???

除了更改服务器方法以获取字符串参数并将它们转换回 Enums 服务器端外,不知道该怎么做;

如何从 Javascript signalR 客户端执行此操作? (不更改服务器方法签名)。

枚举值是整数,传递整数应该有效吗?

是的,刚刚测试过,确实有效!

定义对象以匹配您的服务器端枚举

const CityEnum = {
    LONDON : 101,
    LISBON : 102,
    RIO : 103,
    SYDNEY : 104,
}

const FruitEnum = {
    APPLES     : 0,
    BANANAS    : 1,
    ORANGES    : 2,
}

//JS-Client:
const userName = "mind-mink";
const city = CityEnum.LONDON;
const fruit = FruitEnum.APPLES;

await _hubCnn.invoke("MyHubMethod", userName, city, fruit);