Ich habe hier ein großartiges Beispiel javax.websocket
gefunden:
http://www.programmingforliving.com/2013/08/jsr-356-java-api-for-websocket-client-api.html
Hier der Code basierend auf dem oben verlinkten Beispiel:
TestApp.java
::
package testapp;
import java.net.URI;
import java.net.URISyntaxException;
public class TestApp {
public static void main(String[] args) {
try {
// open websocket
final WebsocketClientEndpoint clientEndPoint = new WebsocketClientEndpoint(new URI("wss://real.okcoin.cn:10440/websocket/okcoinapi"));
// add listener
clientEndPoint.addMessageHandler(new WebsocketClientEndpoint.MessageHandler() {
public void handleMessage(String message) {
System.out.println(message);
}
});
// send message to websocket
clientEndPoint.sendMessage("{'event':'addChannel','channel':'ok_btccny_ticker'}");
// wait 5 seconds for messages from websocket
Thread.sleep(5000);
} catch (InterruptedException ex) {
System.err.println("InterruptedException exception: " + ex.getMessage());
} catch (URISyntaxException ex) {
System.err.println("URISyntaxException exception: " + ex.getMessage());
}
}
}
WebsocketClientEndpoint.java
::
package testapp;
import java.net.URI;
import javax.websocket.ClientEndpoint;
import javax.websocket.CloseReason;
import javax.websocket.ContainerProvider;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.WebSocketContainer;
/**
* ChatServer Client
*
* @author Jiji_Sasidharan
*/
@ClientEndpoint
public class WebsocketClientEndpoint {
Session userSession = null;
private MessageHandler messageHandler;
public WebsocketClientEndpoint(URI endpointURI) {
try {
WebSocketContainer container = ContainerProvider.getWebSocketContainer();
container.connectToServer(this, endpointURI);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* Callback hook for Connection open events.
*
* @param userSession the userSession which is opened.
*/
@OnOpen
public void onOpen(Session userSession) {
System.out.println("opening websocket");
this.userSession = userSession;
}
/**
* Callback hook for Connection close events.
*
* @param userSession the userSession which is getting closed.
* @param reason the reason for connection close
*/
@OnClose
public void onClose(Session userSession, CloseReason reason) {
System.out.println("closing websocket");
this.userSession = null;
}
/**
* Callback hook for Message Events. This method will be invoked when a client send a message.
*
* @param message The text message
*/
@OnMessage
public void onMessage(String message) {
if (this.messageHandler != null) {
this.messageHandler.handleMessage(message);
}
}
/**
* register message handler
*
* @param msgHandler
*/
public void addMessageHandler(MessageHandler msgHandler) {
this.messageHandler = msgHandler;
}
/**
* Send a message.
*
* @param message
*/
public void sendMessage(String message) {
this.userSession.getAsyncRemote().sendText(message);
}
/**
* Message handler.
*
* @author Jiji_Sasidharan
*/
public static interface MessageHandler {
public void handleMessage(String message);
}
}
TooTallNate hat eine einfache clientseitige https://github.com/TooTallNate/Java-WebSocket
Fügen Sie einfach die Datei java_websocket.jar im Ordner dist in Ihr Projekt ein.
// und um den Websocket zu schließen
quelle
Schauen Sie sich diese Java EE 7-Beispiele von Arun Gupta an.
Ich gabelte es auf Github .
Main
ClientEndpoint
quelle
Hier ist ein einfaches Beispiel. Sie können es herunterladen und testen http://www.pretechsol.com/2014/12/java-ee-websocket-simple-example.html
quelle
Verwenden Sie diese Bibliothek org.java_websocket
Als erstes sollten Sie diese Bibliothek in build.gradle importieren
Fügen Sie dann die Implementierung in Abhängigkeit {} hinzu
Dann können Sie diesen Code verwenden
In Ihrer Aktivität deklarieren Sie Objekt für Websocketclient wie
Fügen Sie dann diese Methode für den Rückruf hinzu
}}
quelle
Ich habe Spring 4.2 in meinem Projekt und viele SockJS Stomp-Implementierungen funktionieren normalerweise gut mit Spring Boot-Implementierungen. Diese Implementierung von Baeldung hat funktioniert (für mich ohne Wechsel von Spring 4.2 auf 5). Nachdem ich die in seinem Blog erwähnten Abhängigkeiten verwendet hatte, gab es mir immer noch ClassNotFoundError. Ich habe die folgende Abhängigkeit hinzugefügt, um das Problem zu beheben.
quelle