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