1 module hunt.http.server.WebSocketHandler; 2 3 import hunt.http.codec.http.model.MetaData; 4 import hunt.http.codec.http.stream.HttpConnection; 5 import hunt.http.codec.http.stream.HttpOutputStream; 6 7 import hunt.http.codec.websocket.frame.Frame; 8 import hunt.http.codec.websocket.stream.WebSocketConnection; 9 import hunt.http.codec.websocket.stream.WebSocketPolicy; 10 11 import hunt.logging; 12 import std.conv; 13 14 /** 15 */ 16 class WebSocketHandler { 17 18 protected WebSocketPolicy defaultWebSocketPolicy; 19 protected WebSocketPolicy _webSocketPolicy; 20 21 this() { 22 defaultWebSocketPolicy = WebSocketPolicy.newServerPolicy(); 23 } 24 25 bool acceptUpgrade(HttpRequest request, HttpResponse response, 26 HttpOutputStream output, HttpConnection connection) { 27 version (HUNT_DEBUG) { 28 infof("The connection %s will upgrade to WebSocket connection", 29 connection.getSessionId()); 30 } 31 return true; 32 } 33 34 void onConnect(WebSocketConnection webSocketConnection) { 35 36 } 37 38 WebSocketPolicy getWebSocketPolicy() { 39 if (_webSocketPolicy is null) { 40 return defaultWebSocketPolicy; 41 } 42 else { 43 return _webSocketPolicy; 44 } 45 } 46 47 void setWebSocketPolicy(WebSocketPolicy w) { 48 this._webSocketPolicy = w; 49 } 50 51 void onFrame(Frame frame, WebSocketConnection connection) { 52 version (HUNT_DEBUG) { 53 tracef("The WebSocket connection %s received a frame: %s", 54 connection.getSessionId(), frame.to!string()); 55 } 56 } 57 58 void onError(Exception t, WebSocketConnection connection) { 59 errorf("The WebSocket error", t); 60 } 61 62 }