Skip to end of metadata
Go to start of metadata

Описание

В сборке 1.1.0.45 добавлена возможность отправить с публикующего клиента сообщение с данными в формате JSON всем подписчикам публикуемого потока, а также получить такое сообщение на играющем клиенте.

Отправка сообщения

Для отправки сообщения используется метод Stream.sendData(). Данные должны представлять собой сериализованный валидный JSON объект

code

        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 данные, которые необходимо разобрать

code

    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

  • No labels