# WebSocket send Methode verschickt nichts!



## Dreieck (6. Mrz 2021)

[CODE lang="html" title="HTML-WebSocket-Client"]<!DOCTYPE HTML>

<html>
   <head>

      <script type = "text/javascript">
         function WebSocketTest() {

            if ("WebSocket" in window) {
               alert("WebSocket is supported by your Browser!");

               // Let us open a web socket
               var ws = new WebSocket("ws://localhost:11111");

               ws.onopen = function() {

                  // Web Socket is connected, send data using send()
                  ws.send("Message to send");
                  alert("Message is sent...");
               };

               ws.onmessage = function (evt) {
                  var received_msg = evt.data;
                  alert("Message is received...");
               };

               ws.onclose = function() {

                  // websocket is closed.
                  alert("Connection is closed...");
               };
            } else {

               // The browser doesn't support WebSocket
               alert("WebSocket NOT supported by your Browser!");
            }
         }
      </script>

   </head>

   <body>
      <div id = "sse">
         <a href = "javascript:WebSocketTest()">Run WebSocket</a>
      </div>

   </body>
</html>[/CODE]
[CODE lang="java" title="Server"]import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.iutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
    public static void main(String[] args) throws IOException, NoSuchAlgorithmException {
        ServerSocket server = new ServerSocket(11111);
        try {
            System.out.println("Server has started on 127.0.0.1:11111.\r\nWaiting for a connection...");
            Socket client = server.accept();
            System.out.println("A client connected.");
            InputStream in = client.getInputStream();
            OutputStream out = client.getOutputStream();
            Scanner s = new Scanner(in, "UTF-8");
            try {
                String data = s.useDelimiter("\\r\\n\\r\\n").next();
                Matcher get = Pattern.compile("^GET").matcher(data);
                if (get.find()) {
                    Matcher match = Pattern.compile("Sec-WebSocket-Key: (.*)").matcher(data);
                    match.find();
                    byte[] response = ("HTTP/1.1 101 Switching Protocols\r\n"
                        + "Connection: Upgrade\r\n"
                        + "Upgrade: websocket\r\n"
                        + "Sec-WebSocket-Accept: "
                        + Base64.getEncoder().encodeToString(MessageDigest.getInstance("SHA-1").digest((match.group(1) + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11").getBytes("UTF-8")))
                        + "\r\n\r\n").getBytes("UTF-8");
                    out.write(response, 0, response.length);
                    out.flush();

                    while(true)
                        if(s.hasNextLine())
                            System.out.print("Input: " + s.nextLine());
                }
            } finally {
                s.close();
            }
        } finally {
            server.close();
        }
    }
}[/CODE]
Nachdem der Client (JavaScript-WebSocket) sich mit dem Server erfolgreich verbunden hat, sollte eigentlich die Methode einen String verschicken. Bei meinem Server kommt aber nichts an. Kann mir vielleicht wer helfen, Danke schomal im Vorraus.


----------



## drier (6. Mrz 2021)

Dreieck hat gesagt.:


> if(s.hasNextLine())


So aus dem Bauch heraus, das hier wird nicht funktionieren, ist eine Eigenheit von Scanner.


----------



## mihe7 (6. Mrz 2021)

Dreieck hat gesagt.:


> Kann mir vielleicht wer helfen


Tyrus kann das: https://eclipse-ee4j.github.io/tyru...st/index/getting-started.html#standalone-mode


----------



## Dreieck (16. Mrz 2021)

Ich habe jetzt selber meinen Fehler gefunden, ich hatte den Handshake nicht beachtet. Das WebSocket verschickt nichts, ohne dem Handshake.


----------

