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



使用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);

最新更新