WebSocket send Methode verschickt nichts!

Dreieck

Mitglied
[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.i😵utputStream;
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.
 
Ich habe jetzt selber meinen Fehler gefunden, ich hatte den Handshake nicht beachtet. Das WebSocket verschickt nichts, ohne dem Handshake.
 

Zurück
Oben