J'ai trouvé un excellent exemple en utilisant javax.websocket
ici:
http://www.programmingforliving.com/2013/08/jsr-356-java-api-for-websocket-client-api.html
Voici le code basé sur l'exemple lié ci-dessus:
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 a un côté client simple https://github.com/TooTallNate/Java-WebSocket
Ajoutez simplement le java_websocket.jar dans le dossier dist de votre projet.
// et pour fermer websocket
la source
Jetez un œil à ces exemples Java EE 7 d'Arun Gupta.
Je l'ai fourché sur github .
Principale
ClientEndpoint
la source
Voici un exemple simple .. vous pouvez le télécharger et le tester http://www.pretechsol.com/2014/12/java-ee-websocket-simple-example.html
la source
Utilisez cette bibliothèque org.java_websocket
La première chose que vous devez importer cette bibliothèque dans build.gradle
puis ajoutez l'implémentation dans la dépendance {}
Ensuite, vous pouvez utiliser ce code
Dans votre activité, déclarez un objet pour Websocketclient comme
puis ajoutez cette méthode pour le rappel
}
la source
J'ai Spring 4.2 dans mon projet et de nombreuses implémentations SockJS Stomp fonctionnent généralement bien avec les implémentations Spring Boot. Cette implémentation de Baeldung a fonctionné (pour moi sans passer de Spring 4.2 à 5). Après avoir utilisé les dépendances mentionnées dans son blog, cela m'a toujours donné ClassNotFoundError. J'ai ajouté la dépendance ci-dessous pour le réparer.
la source