2016-06-22 7 views
3

Ich habe eine Java-WebSocket, die sendet eine Reihe von Koordinaten, die ich von einem js-Client KONSTANT abfangen wollen. Hier ist eine vereinfachte Version des Java-Code:Javascript Client lesen von Java Web-Socket

public static void main(String args[]) throws IOException { 
    final int portNumber = 2500; 
    System.out.println("Creating server socket on port " + portNumber); 
    ServerSocket serverSocket = new ServerSocket(portNumber); 

    while (true) { 
     Socket socket = serverSocket.accept(); 
     OutputStream os = socket.getOutputStream(); 
     PrintWriter pw = new PrintWriter(os, true); 

     pw.println("test"); 
     pw.println("\r"); 

    } 
    //later on close connection 
    pw.close(); 
    socket.close(); 
} 

Was meinen js Code hier ist, wie es aussieht:

var connection; 
    try{ 
     connection = new MozWebSocket('ws://localhost:2500/'); 
    }catch(e){ 
     connection = new WebSocket('ws://localhost:2500/'); 
    } 
connection.onopen = function() {console.log('opened');}; 

connection.onclose = function(evt) { console.log("closed"); }; 
connection.onmessage = function(evt) { console.log("message"); }; 
connection.onerror = function(evt) { console.log(evt); }; 

Nach dem Ausführen dies ich so etwas wie "Fehler bei der WebSocket-Handshake erhalten: In der Statuszeile wurde kein Antwortcode gefunden "und ich verstehe, dass es ein schwieriges Problem ist, das von einem JavaScript-Client zu lösen ist. Also frage ich mich, ob ich die Art, wie ich den Websocket implementiert habe, neu anordnen sollte oder ob ich stattdessen einen Websocket-Server erstellen sollte? Aber ich bin mir nicht sicher, ob es mir immer noch erlaubt, ständig die Daten zu lesen, die meine Steckdose zu allen Zeiten senden wird. Vielen Dank im Voraus.

Antwort

1

Sie erkennen, dass Websockets ein Protokoll ist richtig? Es wird nicht nur Klartext gesendet.

Ich habe einen Open-Source-Java-Webserver namens Bowser, der Websockets unterstützt. Sie können einen Teil des Codes hier für die Inspiration einen Blick oder einfach nur die Bibliothek benutzen: https://github.com/mirraj2/Bowser/tree/master/src/bowser/websocket

Um einen WebSocket-Server zu starten, ist es so einfach wie:

int port = 12345; 
new WebSocketServer(port).onOpen(socket->{ 
    System.out.println("Client connected: " + socket); 
}).start(); 
+0

Danke, aber wie verwende ich Ihre Klasse genau ? Ich habe versucht, zu importieren und es in den Buildpath hinzugefügt, aber ich kann nicht scheinen, neue WebSocketServer() zu finden. – Orochi1992

+0

Welche Klasse haben Sie zum Erstellungspfad hinzugefügt? – satnam