1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.websocket;
20
21 import java.io.IOException;
22 import javax.servlet.http.HttpServletRequest;
23 import javax.servlet.http.HttpServletResponse;
24
25 import org.eclipse.jetty.io.EndPoint;
26
27 public class WebSocketServletConnectionD06 extends WebSocketConnectionD06 implements WebSocketServletConnection
28 {
29 private final WebSocketFactory factory;
30
31 public WebSocketServletConnectionD06(WebSocketFactory factory, WebSocket websocket, EndPoint endpoint, WebSocketBuffers buffers, long timestamp, int maxIdleTime, String protocol)
32 throws IOException
33 {
34 super(websocket,endpoint,buffers,timestamp,maxIdleTime,protocol);
35 this.factory = factory;
36 }
37
38
39 public void handshake(HttpServletRequest request, HttpServletResponse response, String subprotocol) throws IOException
40 {
41 String key = request.getHeader("Sec-WebSocket-Key");
42
43 response.setHeader("Upgrade","WebSocket");
44 response.addHeader("Connection","Upgrade");
45 response.addHeader("Sec-WebSocket-Accept",hashKey(key));
46 if (subprotocol!=null)
47 {
48 response.addHeader("Sec-WebSocket-Protocol",subprotocol);
49 }
50
51 response.sendError(101);
52
53 onFrameHandshake();
54 onWebSocketOpen();
55 }
56
57 @Override
58 public void onClose()
59 {
60 super.onClose();
61 factory.removeConnection(this);
62 }
63 }