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 }