Skip to content

Commit

Permalink
Allow WebSocket maxFrameSize to be configured.
Browse files Browse the repository at this point in the history
  • Loading branch information
bridger committed Feb 28, 2020
1 parent 638dc58 commit fa1a69f
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 4 deletions.
2 changes: 1 addition & 1 deletion Sources/Vapor/Response/Response.swift
Expand Up @@ -33,7 +33,7 @@ public final class Response: CustomStringConvertible {
}

internal enum Upgrader {
case webSocket(onUpgrade: (WebSocket) -> ())
case webSocket(maxFrameSize: Int?, onUpgrade: (WebSocket) -> ())
}

internal var upgrader: Upgrader?
Expand Down
3 changes: 2 additions & 1 deletion Sources/Vapor/Routing/RoutesBuilder+WebSocket.swift
Expand Up @@ -2,11 +2,12 @@ extension RoutesBuilder {
@discardableResult
public func webSocket(
_ path: PathComponent...,
maxFrameSize: Int? = nil,
onUpgrade: @escaping (Request, WebSocket) -> ()
) -> Route {
return self.on(.GET, path) { request -> Response in
let res = Response(status: .switchingProtocols)
res.upgrader = .webSocket(onUpgrade: { ws in
res.upgrader = .webSocket(maxFrameSize: maxFrameSize, onUpgrade: { ws in
onUpgrade(request, ws)
})
return res
Expand Down
5 changes: 3 additions & 2 deletions Sources/Vapor/Server/HTTPServerUpgradeHandler.swift
Expand Up @@ -51,8 +51,9 @@ final class HTTPServerUpgradeHandler: ChannelDuplexHandler, RemovableChannelHand
self.upgradeState = .upgraded
if res.status == .switchingProtocols, let upgrader = res.upgrader {
switch upgrader {
case .webSocket(let onUpgrade):
let webSocketUpgrader = NIOWebSocketServerUpgrader(automaticErrorHandling: false, shouldUpgrade: { channel, _ in
case .webSocket(let maxFrameSize, let onUpgrade):
let maxFrameSize = maxFrameSize ?? 1 << 14
let webSocketUpgrader = NIOWebSocketServerUpgrader(maxFrameSize: maxFrameSize, automaticErrorHandling: false, shouldUpgrade: { channel, _ in
return channel.eventLoop.makeSucceededFuture([:])
}, upgradePipelineHandler: { channel, req in
return WebSocket.server(on: channel, onUpgrade: onUpgrade)
Expand Down

0 comments on commit fa1a69f

Please sign in to comment.