/// <summary> /// /// </summary> /// <param name="hubConnectionBuilder"></param> /// <param name="url">hub 的 url</param> /// <param name="protocolOption">协议格式选项</param> /// <returns></returns> public static HubConnectionBuilder WithUrl(this HubConnectionBuilder hubConnectionBuilder, string url, ProtocolOption protocolOption = ProtocolOption.Json) { if (hubConnectionBuilder == null) { throw new ArgumentNullException(nameof(hubConnectionBuilder)); } var option = new HubConnectionOptions(new Uri(url)); WithUrlCore(hubConnectionBuilder, option); return(hubConnectionBuilder); }
public static HubConnectionBuilder WithUrl(this HubConnectionBuilder hubConnectionBuilder, string url, Action <HubConnectionOptions> optionConfig) { if (hubConnectionBuilder == null) { throw new ArgumentNullException(nameof(hubConnectionBuilder)); } var option = new HubConnectionOptions(new Uri(url)); optionConfig(option); WithUrlCore(hubConnectionBuilder, option); return(hubConnectionBuilder); }
private static void WithUrlCore(HubConnectionBuilder hubConnectionBuilder, HubConnectionOptions option) { hubConnectionBuilder.Services.AddSingleton(option); if (option.ProtocolOption == ProtocolOption.Json) { hubConnectionBuilder.Services.AddSingleton <IReceivedMessageHandlerProvider, JsonReceivedMessageHandlerProvider>(); hubConnectionBuilder.Services.AddSingleton <IReceivedMessageHandler, JsonBasicInvocationMessageHandler>(); hubConnectionBuilder.Services.AddSingleton <IReceivedMessageHandler, JsonCloseMessageHandler>(); hubConnectionBuilder.Services.AddSingleton <IReceivedMessageHandler, JsonCompletionMessageHandler>(); hubConnectionBuilder.Services.AddSingleton <IReceivedMessageHandler, JsonPingMessageHandler>(); hubConnectionBuilder.Services.AddSingleton <IReceivedMessageHandler, JsonStreamingInvocationMessageHandler>(); hubConnectionBuilder.Services.AddSingleton <IMessageConventer, JsonMessageConventer>(); } else { throw new NotSupportedException("暂不支持json 之外的协议格式"); } }