Описание
В сборке 1.1.0.45 добавлена возможность отправить с публикующего клиента сообщение с данными в формате JSON всем подписчикам публикуемого потока, а также получить такое сообщение на играющем клиенте.
Отправка сообщения
Для отправки сообщения используется метод Stream.sendData(). Данные должны представлять собой сериализованный валидный JSON объект
mSendDataButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (publishStream == null) { return; } ... ObjectMapper objectMapper = new ObjectMapper(); Map<String, Object> data = null; try { data = objectMapper.readValue(dataStr, HashMap.class); } catch (IOException e) { Log.w(TAG, "Not valid json string"); ... return; } publishStream.sendData(data); } });
Прием сообщения
Для приема сообщения необходимо в обработчике onStreamEvent проверить: если тип полученного сообщения StreamEventType, то сообщение содержит сериализованные JSON данные, которые необходимо разобрать
playStream.on(new StreamEventHandler() { ... @Override public void onStreamEvent(StreamEvent streamEvent) { if (StreamEventType.data.equals(streamEvent.getType())) { parseReceivedData(streamEvent.getPayload()); } } }); ... private void parseReceivedData(Map<String, Object> data) { runOnUiThread(() -> { Date date = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); StringBuilder stringBuilder = new StringBuilder(formatter.format(date) + " - "); for (Map.Entry<String, Object> obj : data.entrySet()) { stringBuilder.append(obj.getKey()).append("=").append(obj.getValue()).append(", "); } stringBuilder.delete(stringBuilder.length() - 2, stringBuilder.length()); mReceivedDataTextView.setText(stringBuilder); }); }
Таким же образом может быть принято сообщение, отправленное из Web SDK или по REST API