• #by-own #raspberrypi #developRobot

Kapitel 16: Websocket-Client Konfiguration

Zur der Website werden Stomp-Websocket Nachrichten gesendet. Somit können sich mehrere Clients gleichzeitig auf den Roboter schalten und alle erhalten immer zur gleichen Zeit die aktuellen Sensorwerte. Durch die Websocket Verbindung ermöglicht dabei, das sich die Werde immer automatisch aktualisieren, ohne das dafür die Website immer wieder neu geladen werden muss.

Konfiguration des Websocket (Server):

package diy.robot.config;

import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.messaging.SessionDisconnectEvent;

import diy.robot.domain.KeyMap.Direction;
import diy.robot.python.KeyMapValuesSenderToPython;

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer
		implements ApplicationListener<SessionDisconnectEvent> {

	@Override
	public void configureMessageBroker(MessageBrokerRegistry messageBrokerRegistry) {
		messageBrokerRegistry.enableSimpleBroker("/topic");
		messageBrokerRegistry.setApplicationDestinationPrefixes("/app"); // "/app/direction"
	}

	@Override
	public void registerStompEndpoints(StompEndpointRegistry stompEndpointRegistry) {
		stompEndpointRegistry.addEndpoint("/diy-robotws").withSockJS();
	}

	@Override
	public void onApplicationEvent(SessionDisconnectEvent event) {
		System.out.println("Someone disconnected from Website");
		KeyMapValuesSenderToPython.sendPythonCommand(Direction.STOP, 0);
	}
}

Entsprechend wird noch ein Client implementiert zum senden von Nachrichten. Die Nachrichten können dann von beliebigen Stellen im Java-Code aus gesendet werden.

package diy.robot.websocketClients;

import org.springframework.messaging.simp.SimpMessageSendingOperations;

import diy.robot.domain.SocketMessage;

public class StompWebSocketClient {

	private static SimpMessageSendingOperations messagingTemplate;

	public StompWebSocketClient(SimpMessageSendingOperations newMessagingTemplate) {
		messagingTemplate = newMessagingTemplate;
	}

	public static void setMessagingTemplate(SimpMessageSendingOperations messagingTemplate) {
		StompWebSocketClient.messagingTemplate = messagingTemplate;
	}

	public static void sendStompMessage(SocketMessage msg) throws Exception {
		messagingTemplate.convertAndSend("/topic/stompMessage", msg);
	}

}
© 2019 by-own
Wir benutzen Cookies

Wir nutzen Cookies auf unserer Website. Einige von ihnen sind essenziell für den Betrieb der Seite, während andere uns helfen, diese Website und die Nutzererfahrung zu verbessern (Tracking Cookies). Sie können selbst entscheiden, ob Sie die Cookies zulassen möchten. Bitte beachten Sie, dass bei einer Ablehnung womöglich nicht mehr alle Funktionalitäten der Seite zur Verfügung stehen.