Loading...
Searching...
No Matches
MqttSessionExample.java
Go to the documentation of this file.
1package com.navigine.examples;
2
3import com.navigine.idl.java.*;
4
9public class MqttSessionExample {
10 private NavigineSdk sdk;
11 private LocationManager locationManager;
12 private NavigationManager navigationManager;
13 private MqttSession mqttSession;
14 private MqttSessionListener mqttSessionListener;
15
17 initializeSdk();
18 setupMqttSessionListener();
19 }
20
24 private void initializeSdk() {
25 try {
26 // [java_NavigineSdk_getInstance]
27 // Get SDK instance
29 // [java_NavigineSdk_getInstance]
30
31 // [java_NavigineSdk_setUserHash]
32 // Set user hash
33 sdk.setUserHash("USER-HASH-HERE");
34 // [java_NavigineSdk_setUserHash]
35
36 // [java_NavigineSdk_setServer]
37 // Set server URL (optional)
38 sdk.setServer("https://custom.navigine.com");
39 // [java_NavigineSdk_setServer]
40
41 // [java_NavigineSdk_getLocationManager]
42 // Get LocationManager for working with locations
43 locationManager = sdk.getLocationManager();
44 // [java_NavigineSdk_getLocationManager]
45
46 // [java_NavigineSdk_getNavigationManager]
47 // Get NavigationManager for working with navigation
48 navigationManager = sdk.getNavigationManager(locationManager);
49 // [java_NavigineSdk_getNavigationManager]
50
51 // [java_NavigineSdk_getMqttSession]
52 // Create MQTT session for publishing position data
53 mqttSession = sdk.getMqttSession(navigationManager);
54 // [java_NavigineSdk_getMqttSession]
55
56 if (mqttSession != null) {
57 System.out.println("MqttSession successfully initialized");
58 }
59 } catch (Exception e) {
60 System.err.println("Error initializing SDK: " + e.getMessage());
61 }
62 }
63
67 private void setupMqttSessionListener() {
68 mqttSessionListener = new MqttSessionListener() {
69 @Override
70 // [java_MqttSessionListener_onConnected]
71 public void onConnected() {
72 System.out.println("MQTT session connected successfully");
73 }
74 // [java_MqttSessionListener_onConnected]
75
76 @Override
77 // [java_MqttSessionListener_onError]
78 public void onError(Error error) {
79 System.err.println("MQTT session error: " + error.getMessage());
80 }
81 // [java_MqttSessionListener_onError]
82
83 @Override
84 // [java_MqttSessionListener_onMessagePublished]
85 public void onMessagePublished() {
86 System.out.println("Message published successfully");
87 }
88 // [java_MqttSessionListener_onMessagePublished]
89 };
90 }
91
96 if (mqttSession == null) {
97 System.err.println("MqttSession not initialized");
98 return;
99 }
100
101 // [java_MqttSession_addListener]
102 // Add MQTT session listener
103 mqttSession.addListener(mqttSessionListener);
104 // [java_MqttSession_addListener]
105
106 // [java_MqttSession_setSubTopic]
107 // Set MQTT sub-topic for publishing position data
108 // Final topic will be "navigine/mobile/positions/" + subTopic + "/" + deviceId
109 mqttSession.setSubTopic("location1");
110 // [java_MqttSession_setSubTopic]
111
112 // [java_MqttSession_connect]
113 // Connect to MQTT broker
114 // Server: MQTT broker hostname or IP address
115 // Port: MQTT broker port (typically 1883 for non-SSL, 8883 for SSL)
116 // Username: MQTT broker username for authentication
117 // Password: MQTT broker password for authentication
118 mqttSession.connect("mqtt.example.com", 1883, "username", "password");
119 // [java_MqttSession_connect]
120
121 // Wait for connection
122 try {
123 Thread.sleep(2000);
124 } catch (InterruptedException e) {
125 Thread.currentThread().interrupt();
126 }
127
128 // [java_MqttSession_publish]
129 // Publish a custom message to a specific MQTT topic
130 // The message will be sent asynchronously and the result will be notified through listener callbacks
131 String customTopic = "custom/device/status";
132 String customMessage = "{\"status\": \"online\", \"timestamp\": " + System.currentTimeMillis() + "}";
133 mqttSession.publish(customTopic, customMessage);
134 // [java_MqttSession_publish]
135 }
136
141 if (mqttSession == null) {
142 System.err.println("MqttSession not initialized");
143 return;
144 }
145
146 System.out.println("=== MQTT Session Configurations ===");
147
148 // Example 1: Connect with default port
149 // [java_MqttSession_setSubTopic]
150 // Set sub-topic. Final topic will be "navigine/mobile/positions/location1/{deviceId}"
151 mqttSession.setSubTopic("location1");
152 // [java_MqttSession_setSubTopic]
153 // [java_MqttSession_connect]
154 // Connect to MQTT broker with default port 1883
155 mqttSession.connect("mqtt.example.com", 1883, "user", "pass");
156 // [java_MqttSession_connect]
157
158 // Wait a bit
159 try {
160 Thread.sleep(1000);
161 } catch (InterruptedException e) {
162 Thread.currentThread().interrupt();
163 }
164
165 // Disconnect before reconnecting with different config
166 // [java_MqttSession_disconnect]
167 // Disconnect from MQTT broker
168 mqttSession.disconnect();
169 // [java_MqttSession_disconnect]
170
171 // Example 2: Connect with SSL port
172 // [java_MqttSession_setSubTopic]
173 // Set sub-topic. Final topic will be "navigine/mobile/positions/building-a/{deviceId}"
174 mqttSession.setSubTopic("building-a");
175 // [java_MqttSession_setSubTopic]
176 // [java_MqttSession_connect]
177 // Connect to MQTT broker with SSL port 8883
178 mqttSession.connect("mqtt-secure.example.com", 8883, "user", "pass");
179 // [java_MqttSession_connect]
180
181 // Wait a bit
182 try {
183 Thread.sleep(1000);
184 } catch (InterruptedException e) {
185 Thread.currentThread().interrupt();
186 }
187
188 // Example 3: Connect with different sub-topic
189 // [java_MqttSession_setSubTopic]
190 // Set different sub-topic. Final topic will be "navigine/mobile/positions/floor_2/{deviceId}"
191 mqttSession.setSubTopic("floor_2");
192 // [java_MqttSession_setSubTopic]
193 // [java_MqttSession_connect]
194 // Connect to MQTT broker
195 mqttSession.connect("mqtt.example.com", 1883, "user", "pass");
196 // [java_MqttSession_connect]
197 }
198
203 if (mqttSession == null) {
204 System.err.println("MqttSession not initialized");
205 return;
206 }
207
208 System.out.println("=== Listener Management ===");
209
210 // Add multiple listeners
211 MqttSessionListener listener1 = new MqttSessionListener() {
212 @Override
213 public void onConnected() {
214 System.out.println("Listener 1: Connected");
215 }
216
217 @Override
218 public void onError(Error error) {
219 System.err.println("Listener 1: Error - " + error.getMessage());
220 }
221
222 @Override
223 public void onMessagePublished() {
224 System.out.println("Listener 1: Message published");
225 }
226 };
227
228 MqttSessionListener listener2 = new MqttSessionListener() {
229 @Override
230 public void onConnected() {
231 System.out.println("Listener 2: Connected");
232 }
233
234 @Override
235 public void onError(Error error) {
236 System.err.println("Listener 2: Error - " + error.getMessage());
237 }
238
239 @Override
240 public void onMessagePublished() {
241 System.out.println("Listener 2: Message published");
242 }
243 };
244
245 // [java_MqttSession_addListener]
246 // Add first listener
247 mqttSession.addListener(listener1);
248 // [java_MqttSession_addListener]
249
250 // [java_MqttSession_addListener]
251 // Add second listener
252 mqttSession.addListener(listener2);
253 // [java_MqttSession_addListener]
254
255 // Connect to trigger callbacks
256 // [java_MqttSession_setSubTopic]
257 mqttSession.setSubTopic("location1");
258 // [java_MqttSession_setSubTopic]
259 // [java_MqttSession_connect]
260 mqttSession.connect("mqtt.example.com", 1883, "user", "pass");
261 // [java_MqttSession_connect]
262
263 // Wait for connection
264 try {
265 Thread.sleep(2000);
266 } catch (InterruptedException e) {
267 Thread.currentThread().interrupt();
268 }
269
270 // [java_MqttSession_publish]
271 // Publish custom messages to different topics
272 mqttSession.publish("custom/events", "{\"event\": \"user_action\"}");
273 mqttSession.publish("custom/logs", "Application started");
274 // [java_MqttSession_publish]
275
276 // Wait for messages to be published
277 try {
278 Thread.sleep(1000);
279 } catch (InterruptedException e) {
280 Thread.currentThread().interrupt();
281 }
282
283 // [java_MqttSession_removeListener]
284 // Remove first listener
285 mqttSession.removeListener(listener1);
286 // [java_MqttSession_removeListener]
287
288 // [java_MqttSession_removeListener]
289 // Remove second listener
290 mqttSession.removeListener(listener2);
291 // [java_MqttSession_removeListener]
292 }
293
297 public void cleanup() {
298 if (mqttSession != null) {
299 // [java_MqttSession_removeListener]
300 // Remove MQTT session listener
301 if (mqttSessionListener != null) {
302 mqttSession.removeListener(mqttSessionListener);
303 }
304 // [java_MqttSession_removeListener]
305
306 // [java_MqttSession_disconnect]
307 // Disconnect from MQTT broker
308 mqttSession.disconnect();
309 // [java_MqttSession_disconnect]
310 }
311 }
312
316 public void runExample() {
317 System.out.println("=== MqttSession Example ===");
318
322
323 // Wait a bit for connection events
324 try {
325 Thread.sleep(3000);
326 } catch (InterruptedException e) {
327 Thread.currentThread().interrupt();
328 }
329
330 cleanup();
331 System.out.println("=== Example completed ===");
332 }
333
337 public static void main(String[] args) {
339 example.runExample();
340 }
341}