コード例 #1
0
  private HandshakeResponse createVersionZero(HandshakeRequest handshakeRequest) {
    String challenge =
        challengeCalculator.calculateVersion1Challenge(
            handshakeRequest.getFields().get("Sec-WebSocket-Key1"),
            handshakeRequest.getFields().get("Sec-WebSocket-Key2"),
            handshakeRequest.getRandomBits());

    String message =
        "HTTP/1.1 101 WebSocket Protocol Handshake"
            + LF
            + "Upgrade: WebSocket"
            + LF
            + "Connection: Upgrade"
            + LF
            + "Sec-WebSocket-Origin: "
            + handshakeRequest.getFields().get("Origin")
            + LF
            + "Sec-WebSocket-Location: ws://localhost:"
            + WebSocketServer.getPort()
            + handshakeRequest.getPath()
            + LF
            + "Sec-WebSocket-Protocol: sample"
            + LF
            + LF
            + challenge;

    return new HandshakeResponse(message);
  }
コード例 #2
0
  private HandshakeResponse createVersionSixOrHigher(HandshakeRequest handshakeRequest) {
    String secWebSocketKey = handshakeRequest.getFields().get("Sec-WebSocket-Key");
    String challenge = challengeCalculator.calculateVersion6Challenge(secWebSocketKey);

    String message =
        "HTTP/1.1 101 Switching Protocols"
            + LF
            + "Upgrade: webSocket"
            + LF
            + "Connection: Upgrade"
            + LF
            + "Sec-WebSocket-Accept: "
            + challenge
            + LF
            + LF;

    return new HandshakeResponse(message);
  }
コード例 #3
0
 private int getVersion(HandshakeRequest handshakeRequest) {
   String version = handshakeRequest.getFields().get("Sec-WebSocket-Version");
   return version != null ? Integer.parseInt(version) : 0;
 }