mirror of
https://github.com/elastic/kibana.git
synced 2025-06-28 11:05:39 -04:00
## Summary Resolves #212919 We noticed that setting the header `'Content-Type': 'text/event-stream',` didn't work as the browser's native EventSource implementation. ```JS return res.ok({ headers: { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache', }, body: observableIntoEventSourceStream(events$ as unknown as Observable<ServerSentEvent>, { signal: abortController.signal, logger, }), }); ``` The reason, apparently, is that we need to flush the compressor's buffer negotiated in the HTTP request. ### How to test it: Run Kibana with examples `yarn start --no-base-path --run-examples --http2` and open the SSE example app in Kibana. You should see a clock updating every second in the UI (the clock is coming from the server). --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
40 lines
1.5 KiB
TypeScript
40 lines
1.5 KiB
TypeScript
/*
|
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
* or more contributor license agreements. Licensed under the "Elastic License
|
|
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
|
|
* Public License v 1"; you may not use this file except in compliance with, at
|
|
* your election, the "Elastic License 2.0", the "GNU Affero General Public
|
|
* License v3.0 only", or the "Server Side Public License, v 1".
|
|
*/
|
|
|
|
import { AppMountParameters, CoreSetup, CoreStart, Plugin } from '@kbn/core/public';
|
|
import { AppPluginSetupDependencies } from './types';
|
|
import { PLUGIN_ID, PLUGIN_NAME } from '../common';
|
|
|
|
export class SseExamplePlugin implements Plugin {
|
|
public setup(core: CoreSetup, deps: AppPluginSetupDependencies) {
|
|
// Register an application into the side navigation menu
|
|
core.application.register({
|
|
id: PLUGIN_ID,
|
|
title: PLUGIN_NAME,
|
|
async mount(params: AppMountParameters) {
|
|
// Load application bundle
|
|
const { renderApp } = await import('./application');
|
|
// Get start services as specified in kibana.json
|
|
const [coreStart] = await core.getStartServices();
|
|
// Render the application
|
|
return renderApp(coreStart, params);
|
|
},
|
|
});
|
|
|
|
deps.developerExamples.register({
|
|
appId: PLUGIN_ID,
|
|
title: PLUGIN_NAME,
|
|
description: 'Plugin that shows how to make use of the feature flags core service.',
|
|
});
|
|
}
|
|
|
|
public start(core: CoreStart) {}
|
|
|
|
public stop() {}
|
|
}
|