// Copyright © WireMock.Net using System; using System.Threading.Tasks; using JetBrains.Annotations; using WireMock.Settings; using WireMock.Types; namespace WireMock.WebSockets; /// /// WebSocket Response Builder interface /// public interface IWebSocketBuilder { /// /// Accept the WebSocket with a specific protocol /// [PublicAPI] IWebSocketBuilder WithAcceptProtocol(string protocol); /// /// Echo all received messages back to client /// [PublicAPI] IWebSocketBuilder WithEcho(); /// /// Handle incoming WebSocket messages /// [PublicAPI] IWebSocketBuilder WithMessageHandler(Func handler); /// /// Define a sequence of messages to send /// [PublicAPI] IWebSocketBuilder WithMessageSequence(Action configure); /// /// Enable broadcast mode for this mapping /// [PublicAPI] IWebSocketBuilder WithBroadcast(); /// /// Proxy to another WebSocket server /// [PublicAPI] IWebSocketBuilder WithProxy(ProxyAndRecordSettings settings); /// /// Set close timeout (default: 10 minutes) /// [PublicAPI] IWebSocketBuilder WithCloseTimeout(TimeSpan timeout); /// /// Set maximum message size in bytes (default: 1 MB) /// [PublicAPI] IWebSocketBuilder WithMaxMessageSize(int sizeInBytes); /// /// Set receive buffer size (default: 4096 bytes) /// [PublicAPI] IWebSocketBuilder WithReceiveBufferSize(int sizeInBytes); /// /// Set keep-alive interval (default: 30 seconds) /// [PublicAPI] IWebSocketBuilder WithKeepAliveInterval(TimeSpan interval); /// /// Enable transformer support (Handlebars/Scriban) /// [PublicAPI] IWebSocketBuilder WithTransformer( TransformerType transformerType = TransformerType.Handlebars, bool useTransformerForBodyAsFile = false, ReplaceNodeOptions transformerReplaceNodeOptions = ReplaceNodeOptions.EvaluateAndTryToConvert); }