| 12345678910111213141516171819202122232425262728293031 |
- //
- // HttpHandlers+WebSockets.swift
- // Swifter
- //
- // Copyright © 2014-2016 Damian Kołakowski. All rights reserved.
- //
- import Foundation
- extension HttpHandlers {
-
- public class func websocket(message:(String) -> ()) -> (HttpRequest -> HttpResponse) {
- func closure(r: HttpRequest) -> HttpResponse {
- guard r.headers["upgrade"] == "websocket" else {
- return .BadRequest
- }
- guard r.headers["connection"] == "Upgrade" else {
- return .BadRequest
- }
- guard let secWebSocketKey = r.headers["sec-websocket-key"] else {
- return .BadRequest
- }
- let upgradeHeaders = [ "Upgrade": "weboscket", "Connection": "Upgrade",
- "Sec-WebSocket-Accept": secWebSocketKey.sha1()
- ]
- return HttpResponse.RAW(101, "Switching Protocols", upgradeHeaders, nil)
- }
- return closure
- }
- }
|