JavaScript Websocket von JavaScript an Java Senden

N

Nussratte

Gast
Hallo,

ich arbeite ich momentan in Javascript und Websockets ein.

ich hab eine kleine Java Applikation die als SocketServer arbeitet. (mit einem ClientSocket Programm getestet, und das Funktioniert)

Jetzt möchte ich gerne mit JavaScript einen Client schreiben und auch an den Java"Server" schicken,

leider bekomme ich da nur einen Header zugeschickt und nicht die eigentliche Nachricht (er springt nicht mal in die function rein die für das versenden zuständig ist, zumindest bekomme ich auch keinen 2ten alert angezeigt.

vielleicht kann mir da jemand weiterhelfen

Java Server
Code:
import java.net.*;
import java.io.*;
public class Server {
  public static void main(String[] args) {
    try {
      System.out.println("Warte auf Verbindung auf Port 7777...");
      ServerSocket serverSocket = new ServerSocket(7777);
      Socket socket = serverSocket.accept();
      System.out.println("Verbindung hergestellt (Server)");
      InputStream in   = socket.getInputStream();
      OutputStream out = socket.getOutputStream();
      int c;
      while ((c = in.read()) != -1) {
    	//out.write((char)c);  
        System.out.print((char)c);
      }
      System.out.println("Verbindung beenden (Server)");
      socket.close();
      serverSocket.close();
    } catch (IOException e) {
      System.err.println(e.toString());
      System.exit(1);
    }
  }
}

Javascript Client
Code:
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">

function WebSocketTest()
{
  alert('Test1');
  
  var mySocket = new WebSocket('ws://localhost:7777');

  mySocket.onopen = function() {
  
    alert('Test2');
    mySocket.send('Hello');
  }

}

</script>
</head>
<body>
<div id="container">
   <a href="javascript:WebSocketTest()">Run -WebSocket</a>
</div>
</body>
</html>
 
Du musst noch den Handshake ausführen, da kommt es dann wieder drauf an welche Websocket Version dein Browser verwendet.

Für C++ findet man selten brauchbare Libraries da die meisten bereits wieder veraltet sind. Wie es bei Java aussieht weiß ich nicht.

Evtl. solltest du erst einmal die Websocket Doku wälzen und dann zum besseren Verständnis das Protokoll selbst implementieren.

Edit:
Ich denke da liegt das Problem am ehesten an unterschiedlichen Websocket Versionen von Server und Client.
 
Zuletzt bearbeitet:
ok, das mag natürlich sein
muss auch zugeben das ich mir darüber gar keine gedanken gemacht habe
hab einfach weil meine java socket sachen funktioniert haben, ich könnte damit auch einfach was vom websocket entgegennehmen
 
Hast du dir von der Java seite mal die Netty Lib und auf der JS Seite Socket IO angeschaut?

Ich denke mit beiden wirst du vom Funktionsumfang am ehesten zu deinem gewünschten Ziel kommen.
 
Du erstellst in Java einen TCP Socket, keine Websocket Verbindung. Javascript kann aber keine Low-Level TCP sockets.

Websocket ist nochmal eine Protokollebene darüber. Da wird erst HTTP auf TCP/IP ausgetauscht und nach einem Handshake auf Websocket Frames gewechselt. Nicht ganz einfach zu implementieren.
 
Zurück
Oben